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

还是看不懂这段的意思。。。。

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

正在回答

4 回答

让我们来看看它是如何被调用的吧,

首先理解:int getPeachNumber(n);   //定义以n为形参的自定义函数

然后理解:getPeachNumber(n+1); //调用自定义函数,并将n+1的值赋给形参n,即求n=n+1时此函数的返回值

最后理解:num = (getPeachNumber(n+1)+1)*2;               

从n=1开始 因为不等于10所以将1代入上式即:

n==1时执行到num=(getPeachNumber(1+1)+1)*2       此时()内为2,即开始执行n==2时的递归函数

n==2时 执行到num=(getPeachNumber(2+1)+1)*2     此时()内为3,即开始执行n==3时的递归函数

n==3时 执行到num=(getPeachNumber(3+1)+1)*2     此时()内为4,即开始执行n==4时的递归函数

n==4时 执行到num=(getPeachNumber(4+1)+1)*2     此时()内为5,即开始执行n==5时的递归函数

n==5时 执行到num=(getPeachNumber(5+1)+1)*2     此时()内为6,即开始执行n==6时的递归函数

n==6时 执行到num=(getPeachNumber(6+1)+1)*2     此时()内为7,即开始执行n==7时的递归函数

n==7时 执行到num=(getPeachNumber(7+1)+1)*2     此时()内为8,即开始执行n==8时的递归函数

n==8时 执行到num=(getPeachNumber(8+1)+1)*2     此时()内为9,即开始执行n==9时的递归函数

n==9时 执行到num=(getPeachNumber(9+1)+1)*2     此时()内为10,即开始执行n==10时的递归函数

n==10,时,即执行return 1; 结束递归并返回值为1,即:getPeachNumber(9+1)=1,因为第10层递归结束了,所以要计算每层递归函数的返回值,以及后面的语句:printf("第%d天所剩桃子%d个\n", n, num);

 返回结果:

因为运行到n==10时我们得出getPeachNumber(9+1)=1,所以当n==9时就可以算出来了:

n==9时,num=(getPeachNumber(9+1)+1)*2 ——>num=(1+1)*2 =4

                输出:第9天所剩桃子4个
n==8时,num=(getPeachNumber(8+1)+1)*2 ——>num=(4+1)*2 =10

                输出:第8天所剩桃子10个
以此类推:

第7天所剩桃子22个
第6天所剩桃子46个
第5天所剩桃子94个
第4天所剩桃子190个
第3天所剩桃子382个
第2天所剩桃子766个
第1天所剩桃子1534个
最后再执行:

printf("猴子第一天摘了:%d个桃子。\n", num);

猴子第一天摘了:1534个桃子。

 

 

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

慕仰9056393 提问者

非常感谢!
2016-08-08 回复 有任何疑惑可以回复我~

因为字号的css属性是可以继承的,所以给body设置字段就相当于给段落设置字号,不过为了严谨些,我们还是完善一下好。setIconEnable(menu,true);

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

感谢感谢

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

比如第九天 剩4个桃子 第十天 剩一个桃子 第九天的就是getPeachNumber(9),第十天的就是getPeachNumber(10),因为是先吃一半 然后再吃一个 所以第九天的数量就是第十天的先加上先吃掉的那个1 然后再乘以二 递归函数调用自身 从10一直到第一天 

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

举报

0/150
提交
取消

还是看不懂这段的意思。。。。

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