neversaynever991684
2020-09-15 14:40
看上如所示
你只理解:到了逐层递归直到最内层,就是n==1时,递归结束,就是不再调用;
递归到最内层后,递归会反方向逐层退出,就是由n=1,得到n=2的结果,由此最后得到n=10的结果;
很好理解啊 10太多了,我们以3天的单词量为例:
输入3: getWordNumber(3);
里面的表达式是 3 + getWordNumber(3-1);
相当于调用了一次getWordNumber(2)
输入2:getWordNumber(2);
里面的表达式是 2+ getWordNumber(2-1);
相当于调用了一次getWordNumber(1);
输入1 :getWordNumber(1);
直接返回1;
getWordNumber(1) = 1;
那么2中的结果就出来了 2 + 1 = 3,那么getWordNumber(2)=3;
同理3中的结果也就出来了 3+ getWordNumber(2) =6, getWordNumber(3)=6;
所以最后的结果就是6.
我问的是左侧中的例题
递归函数可以理解为函数被调用过多次,只是内部调用自己会绕一点。
int getWordNumber(int n)
{
if(n == 1)
{
return 1; //第一天只会1个单词
}
else{
return getWordNumber(n - 1) + n; //到第天会的单词数量
}
}
C语言入门
926210 学习 · 20797 问题
相似问题