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-06 18: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)后面的。本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
编辑预览轻敲空格完成输入- 显示为
- 卡片
- 标题
- 链接
评论按下Enter换行,Ctrl+Enter发表内容
编辑
预览

轻敲空格完成输入
- 显示为
- 卡片
- 标题
- 链接
报告相同问题?
提交
- 2022-10-08 15:22回答 1 已采纳 #include<stdio.h> #include<malloc.h> typedef int ElemType; typedef struct Node { El
- 2021-02-02 12:01回答 1 已采纳 函数调用是栈结构,调用函数就是进栈,退出函数就是出栈,所以递归就是先 进栈 进栈 进栈 。。。然后 出栈 出栈 出栈。。。 咯!
- 2023-02-26 10:40回答 4 已采纳 main打错了,你这成了mian
- 2021-04-05 10:35kaixian2003的博客 递归是数据结构里常见的,递归调用是通过内存的栈实现的,在调用函数时,系统会将被调函数所需的程序空间安排在一个栈中。每当调用一个函数时,就在栈顶为它分配一个存储区。每当从一个函数退出时就释放它的存储区,...
- 2022-04-08 02:16回答 1 已采纳 int c(int n) { if (n == 0) return 1; int sum = 0; for (int i = 0; i < n; i++
- 2023-02-20 00:06回答 6 已采纳 在你的代码中,递归函数 print1 的结束条件是当 l 等于 r 时返回,但是你在每次调用 print1 的时候都将右边界 r 和左边界 l 都输出了一次,这样会导致在 l 和 r 相等的情况下无法
- 2021-12-24 12:11回答 2 已采纳 其中fib(n-1) + fib(n-2)中的fib(n-1), fib(n-2)计算顺序是依赖编译器实现的,因为C语言没有规定操作数的计算顺序 +---> fib(2) "1
- 2021-05-24 20:41weixin_42512509的博客 基于C语言递归与循环关系研究基于C语言递归与循环关系研究摘要本文阐述了作者对于算法设计中递归问题和循环问题的理解,同时讨论了两者间的转换关系,并使用C语言对其中一种转换方式进行了实验,以求在相关算法的优化...
- 2023-02-14 05:04回答 5 已采纳 改动处见注释,供参考: #include<stdio.h> int f(int x, int y) { //x--; //修改 if (x == 1) //i
- 2018-11-12 06:19回答 3 已采纳 s是一个函数内临时变量,每次进入FFT后你都会重新创建s并初始化为0。 你要想实现累加,两种方法,函数体外定义一个变量,或者用FFT的一个参数作累加,每次调FFT都要把这个累加的值赋给这个参数。
- 2022-03-14 05:20回答 4 已采纳 3ms和1ms只差了2毫秒,估计你多运行几遍递归,也会出现3ms的时候
- 2021-04-01 17:15本主题“C语言递归调戏谷歌地球”旨在探讨如何利用递归算法来处理与谷歌地球相关的数据或模拟某些地理计算。下面将详细讨论递归的基本概念、在C语言中的实现以及在地理信息系统(GIS)中的应用。 1. **递归定义**:...
- 2021-05-21 19:51灯火熄灭时的博客 对于简单的代码和一个好的编译器没有区别,但是对于一个具有非终止递归函数的天真的编译器,您将耗尽堆栈空间,称为堆栈溢出。至于会发生什么问题:在堆栈溢出中:堆栈被映射到旁边有未分配内存的位置或内存(每个进程)。...
- 2024-07-28 09:59### C语言中的递归与循环深度解析 C语言作为一种经典的编程语言,在计算机科学领域有着举足轻重的地位。它的高效性、灵活性以及可移植性使得它成为开发操作系统、嵌入式系统以及各种高性能应用程序的首选语言之一。...
- 2021-05-21 20:53没吃药的小沙弥的博客 递归就是一个方法自己调用自己。在编程语言中,如果一个程序允许您在同一个函数中调用一个函数,...但是在使用递归时,程序员需要小心定义函数的退出条件,否则它将进入无限循环。递归函数对于解决许多数学问题非...
- 没有解决我的问题, 去提问
联系我们(工作时间:8:30-22:00)
400-660-0108kefu@csdn.net在线客服
- 京ICP备19004658号
- 经营性网站备案信息
公安备案号11010502030143
- 营业执照
- 北京互联网违法和不良信息举报中心
- 家长监护
- 中国互联网举报中心
- 网络110报警服务
- Chrome商店下载
- 账号管理规范
- 版权与免责声明
- 版权申诉
- 出版物许可证
- ©1999-2025北京创新乐知网络技术有限公司