C语言——用递归函数计算n!

2024-06-08 1330阅读

C语言——用递归函数计算n!

归纳编程学习的感悟,

记录奋斗路上的点滴,

希望能帮到一样刻苦的你!

如有不足欢迎指正!

共同学习交流!

🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言​📝

      比别人多一点努力,你就会多一份成绩!

C语言——用递归函数计算n!

引言:

        阶乘是基斯顿·卡曼(Christian Kramp,1760~1826)于 1808 年发明的运算符号,是数学术语。

        一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。

        亦即n!=1×2×3×...×(n-1)×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。

一、题目:

        用递归函数计算n!

二、 所需知识:(函数递归)

        C 语言允许函数直接或间接地调用它自身,这种调用形式称为递归调用。含有递归调用的函数称为递归函数。若函数在函数体内直接调用函数自身,称为直接递归。若某函数调用其他函数,而其他函数又调用了本函数,这一过程称为间接递归。

        递归法是利用一个问题与其子问题的递推关系来解决问题,通常把一个问题层层转化为一不与原问题相同或相似的但规模较小的子问题来求解。

        递归在解决某些问题时,是一个十分有用的方法,它可以使某些看起来不容易解决的问题变得容易解决,写出的程序也比较简洁。但是递归通常要花较多的机器时间和占用较多的存储空间。

如果一个问题可以用递归的方法解决,则这个问题必须满足以下两个条件:

        (1) 该问题能分解为若干个子问题,子问题与原问题相同或相似但规模较小

        (2) 该问题的子问题存在最简形式,即递归的边界

        每调用一次函数,都要给函数的形参变量和函数内部的局部变量分配新的存储单元,同时,函数代码以新变量重新开始执行。当递归调用返回时,本次的形参变量和函数内部变量的内存单元释放,并返回到函数上次调用处。虽然递归程序构造比较简单,但是由于递归程序需要使用大量的存储空间,因此它的执行效率较低。 

三、代码实现:

#include
long factorial(int);//声明函数factorial() 
int main(){
	int n;
	long y;
	printf("Input a integer number:");
	scanf("%d",&n);
	y=factorial(n);//调用函数factorial() 
	printf("%d!=%ld",n,y);
} 
long factorial(int n){//定义函数factorial(),采用递归方法实现 
	if(n==0||n==1) return 1;
	else return factorial(n-1)*n;//factorial()函数体中又调用factorial()函数本身 
}

四、运行结果: 

C语言——用递归函数计算n!

六、总结 :

        递归可以看成两个过程,一是回缩,而是递推,回缩是递归的前半程,递推是递归的后半程。

        只要调用,就要分配不同的空间

        最后,希望本篇文章对你有所帮助,也希望可以支持支持博主,后续博主也会定期更新学习记录,记录学习过程中的点点滴滴。若这篇文章中有哪些不正确的内容,欢迎大家在评论区和我交流讨论!

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]