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

来源:5-7 递归函数(一)

neversaynever991684

2020-09-15 14:40

看上如所示

写回答 关注

5回答

  • 慕标5051914
    2020-11-20 14:24:28

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

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


  • 不再年轻需努力
    2020-11-17 21:20:19

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

    weixin...

    怎么实现的输入2和3

    2021-11-14 11:31:49

    共 2 条回复 >

  • 力挽狂澜呢
    2020-09-24 17:40:25

    慕标5051...

    讲的啥呀,听不懂

    2020-11-20 14:02:44

    共 1 条回复 >

  • neversaynever991684
    2020-09-15 15:24:37

    我问的是左侧中的例题

    不再年轻需努...

    看我的回答,字数限制,没办法回复

    2020-11-17 21:20:43

    共 1 条回复 >

  • 慕九州5421478
    2020-09-15 15:20:45

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

    int getWordNumber(int n)

    {   

        if(n == 1)

        {

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

        }

        else{

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

        }

    }


C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926210 学习 · 20797 问题

查看课程

相似问题