有几个问题不太懂。。。。求老师解答

来源:5-8 递归函数(二)

陌天

2015-01-31 16:57

 num = (getPeachNumber(n+1)+1)*2;这个语句还是不理解什么意思

写回答 关注

2回答

  • onemoo
    2015-01-31 22:03:03
    已采纳

    这个是个赋值语句,会计算等号右侧的值,并将其赋给num。

    而等号右侧括号中的第一项就是个函数调用,再次调用了这个函数getPeachNumber(n+1),其中有可能再次调用这个函数...直到某一次调用时传入的参数n==10,满足了递归结束条件,于是返回了1,而它的调用者(应该也是在一次getPeachNumber调用中)则完成了等号右侧的计算,并将计算出来的值赋给了它的num,最后将其值返回给了它的调用者——也许还是在前一个getPeachNumber中......最终main函数中的num得到了计算出来的值。

    这就是递归调用。

    陌天

    非常感谢!

    2015-02-03 13:32:06

    共 1 条回复 >

  • linkin55
    2015-04-10 19:03:52

    getPeachNumber(2)=getPeachNumber(1)/2 - 1

    推出

    getPeachNumber(1)=(getPeachNumber(2)+1)*2

    所以

    num = (getPeachNumber(n+1)+1)*2

    sanjia...

    是不是这样理解: 因为getPeachNumber(n)就是第n天的num; n=1时,getPeachNumber(1)是第一天的num,暂时用num1表示; n=2时,getPeachNumber(2)是第一天的num,暂时用num2表示; num1与num2之间满足以下关系:num2 = num1 /2 - 1; 所以,getPeachNumber(2)=getPeachNumber(1)/2 - 1。 推出,getPeachNumber(1)=(getPeachNumber(2)+1)*2。 然后,就有了:num = (getPeachNumber(n+1)+1)*2。

    2015-07-06 15:05:36

    共 2 条回复 >

C语言入门

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

926212 学习 · 20797 问题

查看课程

相似问题