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

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

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

正在回答

2 回答

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

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

这就是递归调用。

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

陌天 提问者

非常感谢!
2015-02-03 回复 有任何疑惑可以回复我~

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

推出

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

所以

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

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

sanjiaofeng

为啥getPeachNumber(2)=getPeachNumber(1)/2 - 1? 这句话的意思是什么,能不能解释一下,谢谢!
2015-07-06 回复 有任何疑惑可以回复我~
#2

sanjiaofeng

是不是这样理解: 因为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 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

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

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