C语言入门--关于递归函数

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

qq_照遍天宇_04160908

2016-10-22 10:32

第二次调用为什么会跟第一次的值不一样呢?总想不明白。又没有n-1=n

写回答 关注

2回答

  • C_plus
    2016-10-22 13:39:36
    已采纳

    第一次调用时n=10,就会return getWordNumber(n-1)+n,也就是getWordNumber(10-1)+10;

    而getWordNumber(10-1)返回的是getWordNumber(9-1)+9;

    ...一直往下减

    getWordNumber(2)返回getWordNumber(2-1)+2;

    getWordNumber(1)返回1;

    所以getWordNumber(10)就等于:

    getWordNumber(1)+2+3+4+5+6+7+8+9+10=55.返回什么可以直接用返回值替换原来的式子,就容易看明白了!

    qq_照遍天... 回复C_plus

    第一次调用的时候我理解,是n-1,因为n已经定义为10了所以是10-1,但第二次我就不明白了,n定义的明明是10,为什么第二次n-1就变成了9-1??!!,n定义的明明是10啊,这里面又没有n=n-1之类 的。

    2016-10-23 08:48:45

    共 4 条回复 >

  • 慕虎6185129
    2016-10-22 16:09:41

       getWordNumber(10)

    =getWordNumber(9)+10

    =(getWordNumber(8)+9)+10

    =((getWordNumber(7)+8)+9)+10

    。。。。。。

    =getWordNumber(1)+2+3+···+9+10

    =1+2+3+···+9+10

    =55


C语言入门

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

926020 学习 · 20793 问题

查看课程

相似问题