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

每天的结果如何出来的?请大神解惑

 num = (getPeachNumber(n+1)+1)*2; //这里是不应该用递归呢?

        printf("第%d天所剩桃子%d个\n", n, num); //天数,所剩桃子个数

假设第5天,那么

num=(getPeachNumber(6)+1)*2  这个num值还没出来   怎么能执行下面的句子呢?

正在回答

4 回答

第10天:1

第9天:(1+1)*2

第8天:[(1+1)*2+1]*2

第7天:{[(1+1)*2+1]*2+1}*2

之后也一样,最笨不会说,每天就是这样循环循环上去的,n是天数,只有不到10就会“加1再乘2”,就比如是第7天,“加1再乘2”三次,找个数字带入一下,只要不满10,达不到‘if’的条件,就会在'else'里一直嵌套下去

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

受教了,谢谢。不过还是不明白printf命令每个N值执行一次的原理,这样算来应该执行1次的

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

我是这样理解 递归函数就是类似于一个循环体 比如 getpeachNumber(6)就是应用第6天的桃子的剩余数量 所以它算的其实是第五天桃子  相当于6就是get(n+1) n就是第五天  但要知道第五天就必须知道第六天  要知道第六天  就必须知道第七天  依次递推  当我们知道 第十天的时候 就开始往回推  直到结束  这时return  返回的就是我们想要的答案 

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

慕粉5320375 提问者

受教了,谢谢。不过还是不明白printf命令每个n值执行一次的原理,这样算来应该执行1次的。
2020-03-26 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

每天的结果如何出来的?请大神解惑

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