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

我不懂啊,为什么return getWordNumber(n-1)+n;

我不懂啊,为什么return getWordNumber(n-1)+n;什么意思,看不懂

正在回答

4 回答

比如n=10,开始执行getWordNumber(10)。。。 return getWordNumber(n-1)+n为return getWordNumber(9)+10,但这里不知道其中的getWordNumber(9)是多少,于是开始执行getWordNumber(9),同理,在getWordNumber(9)中会出现return getWordNumber(8)+9,因为不知道getWordNumber(8)是多少,所以在执行getWordNumber(8)。以此类推。出现getWordNumber(1)时满足if条件得出getWordNumber(1)的值,再把getWordNumber(1)的值套入getWordNumber(2)中得出getWordNumber(2)的值,以此类推。最终返回10天的总词数。

ps:return getWordNumber(n-1)+n............中的(n-1)是为了递归调用前一天的值,后面的n是当天学习的单词量。

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

侠客岛的含笑

说得好
2016-02-17 回复 有任何疑惑可以回复我~

回答的都是大神啊,表示感谢

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

数学原理

当n = 10时

sum = getWordNumber(9)+10

            getWordNumber(9) = getWordNumber(8)+9

            getWordNumber(8) = getWordNumber(7) + 8

            getWordNumber(7) = getWordNumber(6) + 7

            getWordNumber(6) = getWordNumber(5) + 6

            getWordNumber(5) = getWordNumber(4) + 6

            getWordNumber(4) = getWordNumber(3) + 6

            getWordNumber(3) = getWordNumber(2) + 3

            getWordNumber(2) = getWordNumber(1) + 2

            getWordNumber(1) = 1

一个一个往里面带入

得到结果 

sum = 1+2+3+4+5+6+7+8+9+10

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

getWordNumbe(n-1)代表的是之前(n-1)天数所记住的单词,再加n就是n天一共记住的单词总数;

递归,就是不断调用自己本身。比如求5天记住的单词,那就是return getWordNumber(5-1)+5;

继续执行getWordNumber(5-1)为return getWordNumber(4-1)+4,不断自调,直到return getWordNumber(2-1)+2。就不再自调了。然后总加起来就是递归了。

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

举报

0/150
提交
取消

我不懂啊,为什么return getWordNumber(n-1)+n;

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