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

(例题)return表示返回值,最后n是被1赋值,那最终不应该为1么,为什么前面再怎么递归最终都为1 啊

看上如所示

正在回答

5 回答

你只理解:到了逐层递归直到最内层,就是n==1时,递归结束,就是不再调用;

递归到最内层后,递归会反方向逐层退出,就是由n=1,得到n=2的结果,由此最后得到n=10的结果;


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

很好理解啊 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.

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

37777

请问这个的意思就是递归在调用的时候先从外到内逐步算出直到算到最内层后再从最内层推到最外层的意思吗
2020-12-17 回复 有任何疑惑可以回复我~
#2

weixin_慕尼黑2048433

怎么实现的输入2和3
2021-11-14 回复 有任何疑惑可以回复我~
#1

慕标5051914

讲的啥呀,听不懂
2020-11-20 回复 有任何疑惑可以回复我~

我问的是左侧中的例题

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

不再年轻需努力

看我的回答,字数限制,没办法回复
2020-11-17 回复 有任何疑惑可以回复我~

递归函数可以理解为函数被调用过多次,只是内部调用自己会绕一点。

int getWordNumber(int n)

{   

    if(n == 1)

    {

        return 1;    //第一天只会1个单词

    }

    else{

        return getWordNumber(n - 1) + n;       //到第天会的单词数量

    }

}


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

举报

0/150
提交
取消

(例题)return表示返回值,最后n是被1赋值,那最终不应该为1么,为什么前面再怎么递归最终都为1 啊

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