国产001
2017-08-17 21:12
return getWordNumber(n-1)+n什么意思,这题不是1+2+3+4...10吗?
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天”记单词的数量,这样来分析问题。
谢谢!
楼上说的很好 如果是第一天 则一共记的单词数为 1
如果不是 则一共记的单词数是 到昨天一共记的单词加上当天记的单词[getWordNumber(n-1)+n] 而到昨天一共记的单词数 是到前天一共记得单词加上前天记的单词[getWordNumber(n-1)=getWorldNumber(n-2)+n-1]
以此类推
C语言入门
926027 学习 · 20793 问题
相似问题