Void up(int);
int main()
{
Up(1);
Return 0;
}
Void up(int n)
{
Printf("%d",n);
If(n<4)
Up(n+1);
Printf("%d",n);
}
为什么不会从1-4,4-1然后反复打印呢?
初学者一枚,手机打字,所以大小写有误。
c语言递归为什么不会无限循环?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 云镛 2016-11-07 02:26关注
递归说到底是函数自己调用自己并且是嵌套调用,只要是调用,总有返回的时候,也就是被调函数结束返回上一级(调用函数)继续执行。
在这里,函数调用自己时,传递的参数是值传递,被调函数并不会改变调用函数中的变量。请看下面的例子:
int add(int n){
n++;
return 0;
}
int main(){
int a = 5;
add(a);
printf("a = %d\n",a);//猜猜a等于几, 答案是a=5,原因是值传递,也就是执行add(a)时,把a复制了一份传给add函数的参数n。并不是把a自己
//传给了add函数。
}
递归的本质是函数调用。只要是调用就有返回的时候。就是被调函数结束返回后,继续执行调用函数。在你的例子里就是执行printf("%d\n",n);-->up(n+1)后面的。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 腾讯企业邮箱邮件可以恢复么
- ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
- ¥15 错误 LNK2001 无法解析的外部符号
- ¥50 安装pyaudiokits失败
- ¥15 计组这些题应该咋做呀
- ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
- ¥15 让node服务器有自动加载文件的功能
- ¥15 jmeter脚本回放有的是对的有的是错的
- ¥15 r语言蛋白组学相关问题
- ¥15 Python时间序列如何拟合疏系数模型