搜索
首页电脑教程电脑知识用C语言递归实现幂函数,并在主函数中调用

用C语言递归实现幂函数,并在主函数中调用

/*x^n的值应小于32767,否则输出为负数。这是因为int类型的取值范围有限,正常的pow函数通常使用float或double型,并且参数也应该是float或double型。*/

用C语言递归实现幂函数,并在主函数中调用

#include

int power(int x,int n)

{

if (n>1)

{

return x*power(x,n-1);

}

else

{

if (n>0)

return x;

else

return 1;

}

}

void main()

{

int x,n;

printf("input x,n:");

scanf("%d%d",&x,&n);

printf("%d",power(x,n));

getch();

clrscr();

}

C语言关于函数的递归

你的递归程序是错的,我转来个对的,带讲解的,你看看。

语言函数的递归和调用

一、基本内容:

C语言中的函数可以递归调用,即:可以直接(简单递归)或间接(间接递归)地自己调自己。

要点:

1、C语言函数可以递归调用。

2、可以通过直接或间接两种方式调用。目前只讨论直接递归调用。

二、递归条件

采用递归方法来解决问题,必须符合以下三个条件:

1、可以把要解决的问题转化为一个新问题,而这个新的问题的解决方法仍与原来的解决方法相同,只是所处理的对象有规律地递增或递减。

说明:解决问题的方法相同,调用函数的参数每次不同(有规律的递增或递减),如果没有规律也就不能适用递归调用。

2、可以应用这个转化过程使问题得到解决。

说明:使用其他的办法比较麻烦或很难解决,而使用递归的方法可以很好地解决问题。

3、必定要有一个明确的结束递归的条件。

说明:一定要能够在适当的地方结束递归调用。不然可能导致系统崩溃。

三、递归实例

例:使用递归的方法n!

当n>1时,n!的问题可以转化为n*(n-1)!的新问题。

比如n=5:

第一部分:5*4*3*2*1 n*(n-1)!

第二部分:4*3*2*1 (n-1)*(n-2)!

第三部分:3*2*1 (n-2)(n-3)!

第四部分:2*1 (n-3)(n-4)!

第五部分:1 (n-5)! 5-5=0,得到值1,结束递归。

源程序:

fac(int n)

{int t;

if(n==1)||(n==0) return 1;

else

{ t=n*fac(n-1);

return t;

}

}

main( )

{int m,y;

printf(“Enter m:”);

scanf(“%d”,&m);

if(m

else

{y=fac(m);

printf(“n%d! =%d n”,m,y);

}

}

四、递归说明

1、当函数自己调用自己时,系统将自动把函数中当前的变量和形参暂时保留起来,在新一轮的调用过程中,系统为新调用的函数所用到的变量和形参开辟另外的存储单元(内存空间)。每次调用函数所使用的变量在不同的内存空间。

2、递归调用的层次越多,同名变量的占用的存储单元也就越多。一定要记住,每次函数的调用,系统都会为该函数的变量开辟新的内存空间。

3、当本次调用的函数运行结束时,系统将释放本次调用时所占用的内存空间。程序的流程返回到上一层的调用点,同时取得当初进入该层时,函数中的变量和形参所占用的内存空间的数据。

4、所有递归问题都可以用非递归的方法来解决,但对于一些比较复杂的递归问题用非递归的方法往往使程序变得十分复杂难以读懂,而函数的递归调用在解决这类问题时能使程序简洁明了有较好的可读性;但由于递归调用过程中,系统要为每一层调用中的变量开辟内存空间、要记住每一层调用后的返回点、要增加许多额外的开销,因此函数的递归调用通常会降低程序的运行效率。

五、程序流程

fac(int n) /*每次调用使用不同的参数*/

{ int t; /*每次调用都会为变量t开辟不同的内存空间*/

if(n==1)||(n==0) /*当满足这些条件返回1 */

return 1;

else

{ t=n*fac(n-1); /*每次程序运行到此处就会用n-1作为参数再调用一次本函数,此处是调用点*/

return t; /*只有在上一句调用的所有过程全部结束时才运行到此处。*/

}

}

以上是用C语言递归实现幂函数,并在主函数中调用的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:Excel办公网。如有侵权,请联系admin@php.cn删除
修复:文件已损坏,无法打开修复:文件已损坏,无法打开Apr 13, 2025 am 12:21 AM

偶然地,您可能会因错误而被拒绝访问Excel文件:该文件已损坏并且无法打开。您为什么会收到此错误以及如何解决此问题以避免在这种情况下数据丢失?阅读此php.cn帖子以尝试f

KB5005112:它是什么样的更新以及如何获取?KB5005112:它是什么样的更新以及如何获取?Apr 13, 2025 am 12:20 AM

KB5005112是针对Windows 10,版本1809和Windows Server 2019量身定制的重要维修堆栈更新。在本文中,PHP.CN软件将深入研究此更新,详细介绍如何获得它并提供有关S的相关信息

如何解决我们在Microsoft团队上遇到了问题?如何解决我们在Microsoft团队上遇到了问题?Apr 13, 2025 am 12:19 AM

微软团队是用于实时协作和沟通的最广泛使用的应用程序之一。收到一些错误消息(例如我们遇到问题)并不少见。在PHP.CN网站上的这篇文章中,我们将探讨如何摆脱此ERRO

在四个步骤内从软盘中恢复数据在四个步骤内从软盘中恢复数据Apr 13, 2025 am 12:18 AM

您知道什么是软盘以及如何从中恢复数据吗?从此数据存储设备中拯救数据,一些软盘用户会打扰。来自PHP.CN的这篇文章将向您展示一个教程,以从软盘中恢复数据并介绍您

在哪里可以找到波斯亲王:丢失的皇冠保存文件位置在哪里可以找到波斯亲王:丢失的皇冠保存文件位置Apr 13, 2025 am 12:17 AM

波斯王子的一些:丢失的皇冠玩家对保存文件位置感到好奇,因为这些数据与游戏进度密切相关。我们建议玩家在失去游戏进度的情况下备份这些重要数据。如果你想k

如何修复USB2SER.SYS错误 - 无法启用核心隔离如何修复USB2SER.SYS错误 - 无法启用核心隔离Apr 13, 2025 am 12:16 AM

您是否想知道usb2ser.sys是什么,它是用来做什么的?它与一些必要的Windows功能有关,当发生某些相关错误时,您可能会发生一些灾难。因此,重要的是要找出USB2Ser.sys。

如何在Windows和PS4上恢复已删除的Minecraft世界如何在Windows和PS4上恢复已删除的Minecraft世界Apr 13, 2025 am 12:15 AM

年轻的游戏爱好者必须知道Minecraft,这是一个沙盒建造者游戏。您可以探索土地并创建您的结构。如果花费数小时在数小时后,您的世界意外删除了,那将是一种令人沮丧的经历。这个php.cn帖子显示了哟

修复右键单击菜单很快消失了,专家提示修复右键单击菜单很快消失了,专家提示Apr 13, 2025 am 12:14 AM

右键单击菜单可快速访问许多功能。但是有些人反应说,右键单击菜单在选择之前很快就消失了。如何解决这个问题?您可以在此php.cn帖子中找到答案。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。