为了账号安全,请及时绑定邮箱和手机立即绑定
关注
慕粉5320375

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

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

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

假设第5天,那么

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

2020-03-25 源自:C语言入门 5-8 188 浏览 3 回答

第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'里一直嵌套下去

2020-03-29
回复 1

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

2020-03-25
回复 0

慕粉5320375 (提问者)

受教了,谢谢。不过还是不明白printf命令每个n值执行一次的原理,这样算来应该执行1次的。
#1 2020-03-26 回复

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

2020-03-26
回复 0

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信