鱼C论坛

 找回密码
 立即注册
查看: 1189|回复: 5

[已解决]带你学C递归的课后题

[复制链接]
发表于 2019-11-11 12:40:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这个代码的输出结果不是很理解。
我理解的是输入2时流程:
up_and_down执行printf("%d\n", n);函数打印2----------》  因为2>0、执行up_and_down(1)------------------》 执行printf("%d\n", n);打印1--------------》因为1>0,所以执行up_and_down(0)----------》 执行printf("%d\n", n)打印0--------------》因为0并不大于0,所以跳出递归执行后面的printf 打印0
按照这种思路分析的话结果是逐次递减的
但是为什么结果最后又逐次上升了?
最佳答案
2019-11-11 13:32:24
本帖最后由 jackz007 于 2019-11-11 14:04 编辑

        首先,必须明确,函数 up_and_down(n) 在什么情况下会递归到底,那么,什么是递归到底呢?答案就是函数不再调用自己了,显然,up_and_down(n) 递归到底的条件是 n 的值为 0 。
        递归函数以底为界,可以划分为进入过程和退出过程,在进入过程中,up_and_down(n) 首先打印了 n 的数值,如果输入了数值 2,那么,在进入过程中,会依次打印数字 "2 "、"1 "、"0 ",然后,进入退出过程,打印 n (如果 n = 0) 或 n - 1(如果 n > 0),所以,退出过程将依次打印"0 "、"0 "、"1 "。最终打印输出的内容就是:"2 1 0 0 0 1"
捕获.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-11 13:32:24 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2019-11-11 14:04 编辑

        首先,必须明确,函数 up_and_down(n) 在什么情况下会递归到底,那么,什么是递归到底呢?答案就是函数不再调用自己了,显然,up_and_down(n) 递归到底的条件是 n 的值为 0 。
        递归函数以底为界,可以划分为进入过程和退出过程,在进入过程中,up_and_down(n) 首先打印了 n 的数值,如果输入了数值 2,那么,在进入过程中,会依次打印数字 "2 "、"1 "、"0 ",然后,进入退出过程,打印 n (如果 n = 0) 或 n - 1(如果 n > 0),所以,退出过程将依次打印"0 "、"0 "、"1 "。最终打印输出的内容就是:"2 1 0 0 0 1"
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-11 14:06:41 | 显示全部楼层
jackz007 发表于 2019-11-11 13:32
首先,必须明确,函数 up_and_down(n) 在什么情况下会递归到底,那么,什么是递归到底呢?答案就是 ...

看到您的回复后,进入过程似乎明白了为什么是2、1、0.但是退出过程还是有点儿懵,它减一了为啥还会变为0、0、1递增呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-11 14:11:18 | 显示全部楼层
糖逗 发表于 2019-11-11 14:06
看到您的回复后,进入过程似乎明白了为什么是2、1、0.但是退出过程还是有点儿懵,它减一了为啥还会变为0 ...


      递归到底的时候,n = 0,会输出 "0 ",然后,递归返回 n = 1 那一层,无疑,打印 n - 1 的结果还是 "0 ",然后,递归返回 n = 2 那一层,也就是最外层,打印 n - 1 的结果无疑是 "1 "。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-11 14:11:30 | 显示全部楼层
jackz007 发表于 2019-11-11 13:32
首先,必须明确,函数 up_and_down(n) 在什么情况下会递归到底,那么,什么是递归到底呢?答案就是 ...

我好像明白了   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-11 14:41:55 | 显示全部楼层
记录一下我看过的和递归有关的一个博文https://blog.csdn.net/it8343/article/details/80180448
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 12:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表