问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言函数的递归应用

发布网友 发布时间:2022-05-29 09:48

我来回答

4个回答

热心网友 时间:2023-10-14 23:40

我解释下具体执行过程:
printf("%d!=%ld\n",num,mul(num));
这里调用了mul(num)方法,第一个值是5,进入方法后,
if(5>1) x=5*mul(5-1);
这里又调用了一次方法,
mul(5-1)
这里就是递归调用了,需要把4的值带入方法又执行一次,
变成:if(4>1) x=4*mul(4-1);
这里又调用了一次方法,
mul(4-1)
依次类推为:if(3>1) x=3*mul(3-1);
if(2>1) x=2*mul(2-1);
这里看懂了没,递归函数关键字在“递”和“归”,相当于循环,一直到条件不满足时在“归”,一步步return直到第一个调用的mul方法。在return主函数。

也就是从最后一次调用
mul(2-1)时
n的值为1了,执行else语句,结束“递”方法操作,return语句,返回X=1,那么接下来变为
if(2>1) x=2*1,返回X=2,接下来变为:
if(3>1) x=3*2,返回X=6,接下来变为:
if(4>1) x=4*6,返回X=24,接下来变为:
if(5>1) x=5*24,返回X=120 结束递归调用。
希望你能看懂,还有问题在补充吧!

热心网友 时间:2023-10-14 23:40

递归方法的概念
类方法成员间允许相互调用,也可以自己调用自己。类的方法如果在方法体内直接或间接地自己调用自己就称为递归方法。
递归基本思想就是“自己调用自己”。递归方法实际上体现了“依此类推”、“用同样的步骤重复”这样的思想,它可以用简单的程序来解决某些复杂的计算问题。
递归调用在完成阶乘运算、级数运算、幂指数运算等方面特别有效。
在执行递归操作时,C#语言把递归过程中的信息保存在堆栈中。如果无限循环地递归,或者递归次数太多,则产生“堆栈溢出”错误
例:用递归方法求阶乘。利用的数学公式为n!=n*(n-1)!。当n=0时,n!=1。
代码如下:
public long F(int n)
{
if (n==1)
return 1;
else
return n*F(n-1);
}

热心网友 时间:2023-10-14 23:41

 函数名: tmpfile

  功 能: 以二进制方式打开暂存文件

  用 法: FILE *tmpfile(void);

  程序例:

  
#include
#include
int main(void)
{
FILE *tempfp;
tempfp = tmpfile();
if (tempfp)
printf("Temporary file created\n");
else
{
printf("Unable to create temporary file\n");
exit(1);
}
return 0;
}

  函数名: tmpnam

  功 能: 创建一个唯一的文件名

  用 法: char *tmpnam(char *sptr);

  程序例:

  
#include
int main(void)
{
char name[13];
tmpnam(name);
printf("Temporary name: %s\n", name);
return 0;
}

  函数名: tolower

  功 能: 把字符转换成小写字母

  用 法: int tolower(int c);

  程序例:

  
#include
#include
#include
int main(void)
{
int length, i;
char *string = "THIS IS A STRING";
length = strlen(string);
for (i=0; i {
string[i] = tolower(string[i]);
}
printf("%s\n",string);
return 0;
}

  函数名: toupper

  功 能: 把字符转换成大写字母

  用 法: int toupper(int c);

  程序例:

  
#include
#include
#include
int main(void)
{
int length, i;
char *string = "this is a string";
length = strlen(string);
for (i=0; i {
string[i] = toupper(string[i]);
}
printf("%s\n",string);
return 0;
}

  函数名: tzset

  功 能: UNIX时间兼容函数

  用 法: void tzset(void);

  程序例:

  
#include
#include
#include
int main(void)
{
time_t td;
putenv("TZ=PST8PDT");
tzset();
time(&td);
printf("Current time = %s\n", asctime(localtime(&td)));
return 0;
}

热心网友 时间:2023-10-14 23:42

执行x=n*mul(n-1)时不是还要将n-1带入原函数中吗?
n=5 x=n*mul(n-1)-->n*mul(4)-->n=4带入
n=4 x=n*mul(n-1)-->n*mul(3)-->n=3带入
n=3 x=n*mul(n-1)-->n*mul(2)-->n=2带入
n=2 x=n*mul(n-1)-->n*mul(1)-->n=1带入
n=1 x=1-->1返回 n=2时的x=n*mul(n-1)
n=2 x=n*2=2返回 n=3时的x=n*mul(n-1)
n=3 x=n*3=6返回 n=4时的x=n*mul(n-1)
n=4 x=n*4=24返回 n=5时的x=n*mul(n-1)
n=5 x=n*5=120返回主程序
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
成都汇众益智游戏学院怎么样 为什么苹果手机屏幕老是自动滚上去? roughness test什么意思 国家标准打印纸为每包500张,小雨同学家里新买—包打印 纸,她想练习... 谁知道卡布奇诺含义 卡布奇诺咖啡历史 电脑针式打印纸有哪些规格? 外籍人才招聘 接种甲肝疫苗会出现什么不良反应 中华人民共和国境内的任何人均应接种哪些疫苗 球栉水母属于什么科 如何防止模具生锈,有哪些方法 为什么模具会生锈?怎样避免锈蚀? 塑胶模具水路易生锈 怎么做防锈处理啊 塑胶模具蚀纹面有一点生锈怎么处理 怎样吃才快减肥? 梦幻西游:摇钱树苗要怎么照顾摇的次数才多!谢谢了,大神帮忙啊 梦幻西游摇钱树苗怎么弄,摇的次数会多或摇的时候有意外收获? 怎么吃能快速瘦身? 梦幻西游 摇钱树树苗 怎么才能照顾才能要摇动的次数到8到9次? 《梦幻西游》摇钱树树苗,怎么才能照顾才能要摇动的次数到8到9次? 期货客户交易数据应该从哪些方面分析,才能潜在的了解该客户的信息? 行政诉讼法、行政复议法 行政诉讼与行政复议区别 行政处罚法行政诉讼法行政复议法究竟怎么区分 有需要野生石斛的吗 有人需要野生铁皮石斛吗 变速箱油需要定期换吗? 变速箱油根本不用换吗? TGP饥荒联机版专用服务器电脑配置。 递归算法在实际的软件开发中应用的多吗? 求口袋妖怪几何雪花强攻配招,因为四倍克龙飞行所以我弄个强攻 男朋友说我敷衍他冷漠他了 我怎么回答 递归在WinForm中的应用 递归的重要组成 栉水母的特点 递归怎么理解 求JAVA递归的应用 什么叫做递归 十二生肖哪个安家乐业 安家乐业。是什么意思 什么平台可以免费出租房子? 于家乐这个名字是什么含义呢?帮忙看看这个名字怎么样能打多少分? 高悬赏跪求一款鞋子照片、货号。达芙妮2011款女式高跟浅口鞋,前边平淡,正后边有一小蝴蝶结。 请问建筑工程类建造师证书是怎么去获得啊? 为什么达芙妮的鞋子磨脚 数控车床宏程序培训 数控专业培养目标是什么? 数控车床编程与职业技能鉴定实训的介绍 数控车床操作工的介绍