我不懂啊,为什么return getWordNumber(n-1)+n;什么意思,看不懂
比如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是当天学习的单词量。
回答的都是大神啊,表示感谢
数学原理
当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
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。就不再自调了。然后总加起来就是递归了。