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

5-7怎么理解

return getWordNumber(n-1)+n什么意思,这题不是1+2+3+4...10吗?

正在回答

4 回答

return getWordNumber(n-1)+n;是在返回的时候,再调用一次getWordNumber(),

比如当你调用getWordNumber(10),是这样计算的:

getWordNumber(10)=getWordNumber(9)+10

=getWordNumber(8)+9+10

...

=getWordNumber(1)+2+3+...+10

又因为前面知道n为1时,getWordNumber(1) return的值是1,所以就计算出来了1+2+3+...+10


因为这一节讲的是递归函数,所以要用递归的思想考虑问题。所谓递归就是自己调用自己,在这个题目里面,我们简单分析就能看出来是要计算从1一直加到10。可是用递归思想,就要从问题结局,也就是每一天都比前一天多记一个单词,求“第n天”记单词的数量,这样来分析问题。

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

王之藐视

你好,先谢谢你的解释,但是我还是有一个疑问,我好像把递归和重复语句有些搞混,我不太懂语句如果没有自加或自减是怎么再进行下一步的,我的理解是“9+10”就结束了执行,问题是出在return那里吗?谢谢
2017-08-19 回复 有任何疑惑可以回复我~
#2

xhz567 回复 王之藐视

就是在return里,比如你开始是调用的getWordNumber(10),因为 return语句是这样写的:return getWordNumber(n-1)+n,所以接下来要再调用getWordNumber(10-1),也就是getWordNumber(9)。 以此类推。 直到最后变成了getWordNumber(1),因为代码里规定了n等于1时,return 1; 此时这个递归就结束了。 其实递归你可以想象成一个花苞逐渐从外层绽放的过程,开始最外层的花瓣打开,结果里面其实还是个花骨朵,这样再打开次外层的花瓣,直到最后所有花瓣都开了。
2017-08-19 回复 有任何疑惑可以回复我~
#3

xhz567 回复 xhz567

或者是剥洋葱,最外层剥开之后,下一层还是个洋葱。剥下去的一层,就好比这个例子里return里的那个“+n”,剩下的就是return里的get什么什么(n-1),最后剥完了,就是那个return 1; 初学递归确实比较难理解,慢慢来就好了。j
2017-08-19 回复 有任何疑惑可以回复我~
#4

王之藐视 回复 xhz567

我大概懂了,太谢谢你了
2017-08-20 回复 有任何疑惑可以回复我~
查看1条回复

谢谢!

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

楼上说的很好     如果是第一天    则一共记的单词数为 1

如果不是     则一共记的单词数是    到昨天一共记的单词加上当天记的单词[getWordNumber(n-1)+n]   而到昨天一共记的单词数 是到前天一共记得单词加上前天记的单词[getWordNumber(n-1)=getWorldNumber(n-2)+n-1]  

以此类推

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

举报

0/150
提交
取消

5-7怎么理解

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