为了账号安全,请及时绑定邮箱和手机立即绑定

我不太明白题中的n的值的变化

根据题中函数的执行,我可以理解num的值的变化,但是函数内的输出,例如第一条,n是9,num是4;num值我理解,但是n的值为什么是9我不太清楚

正在回答

4 回答

我貌似理解题主的意思了,为什么是打印从9开始而不是1,那是因为“printf("第%d天所剩桃子%d个\n", n, num); //天数,所剩桃子个数”这条语句在最开始传入 1 的时候并没有执行,那这条语句是什么时候开始第一次执行呢,就是一直执行这个“(getPeachNumber(n + 1) + 1)*2”递归,直到n曾加到10了,然后开始return 1,return 1;之后,此时函数跳回到上一层,这个时候n等于9,然后因为递归已经执行过了,开始往外一层一层退了,才开始第一次执行“printf("第%d天所剩桃子%d个\n", n, num);”,而此时正好是n等于9,然后就是8等等,主要是你要是理解了递归的过程就好了。

5 回复 有任何疑惑可以回复我~

说一下我的理解吧。楼主是没有弄清楚N的变化过程

我就单单讲一下,n在递归中的变化

从第一次开始

因为N=1不等于10,而后有num = (某函数(n+1)+1)*2;  

其中  某函数(n+1)

又是一次调用函数

而新的N=n+1

但是新的N=2,还是不等于10故又往后跳

直到新的N等于10,递归结束时才会开始有执行结果

(程序在计算5的阶乘的时候,先执行递推,当n=1或者n=0的时候返回1,再回推将计算并返回。可看一下上一题理解)

楼主搞清楚执行顺序就好!  不理解是对递归的执行顺序模糊,理清楚就能知道结果为何而来。

以上只是个人见解,本人小白一个,如有错漏,请见谅。



4 回复 有任何疑惑可以回复我~

(getPeachNumber(n+1)+1)*2;

算法的核心是‘今天的桃子数量=(明天桃子数量+1)的两倍,

例:今天是第九天,今天的桃子数=第十天的桃子数+1再*2.

(个人理解)


1 回复 有任何疑惑可以回复我~
#1

洋气么么

我觉得你解释算法解释得很对,但是并没有回答楼主的提问,N是怎么变化的?我也同疑惑中。
2018-12-19 回复 有任何疑惑可以回复我~
#2

就是头有点冷 回复 洋气么么

我也很不懂为什么是先从9开始输出
2018-12-25 回复 有任何疑惑可以回复我~
#3

米虫懒得聪明 回复 就是头有点冷

我下边有回答
2019-01-03 回复 有任何疑惑可以回复我~
#4

米虫懒得聪明 回复 洋气么么

我下边回答了,看能懂不
2019-01-03 回复 有任何疑惑可以回复我~
查看1条回复

吃前数桃子,

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926210    人
  • 解答问题       20797    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

我不太明白题中的n的值的变化

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信