递归函数,难死我了...我思维转的慢,求傻瓜式的讲解!

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

慕仰103958

2018-11-17 20:21

#include <stdio.h>

/* 定义获取单词数量的函数 */

int getWordNumber(int n)

{   

    if(n == 1)

    {

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

    }

    else{

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

    }

}

int main()

{

    int num = getWordNumber(10);     //获取会了的单词数量

    printf("小明第10天记了:%d个单词。\n", num);

    return 0;

}

首先我不理解为什么最终的结果不是19,而是55,你看嘛(10-1)+10=19

其次,他是从那一步开始循环的,且循环的过程,及计算过程是怎么样的?

目前就卡在这

写回答 关注

4回答

  • 阿糯123
    2019-01-17 13:52:46

    你那样子算就不是递归了,递归就是反复调用自己

  • 徐无庸
    2019-01-02 20:39:17

    我跟你有一样的困惑

  • 慕仰4757031
    2018-11-22 16:10:39

    这个答案也不是55额

  • 慕仰103958
    2018-11-17 20:47:29

    这是我的猜想

    因为 n = 10 所以 执行 else 语块,所以再次执行 wing函数 ,又因为wing(10-1=9)+10 = 19,所以再次执行 wing函数的时候 n的初始值

    是9,9不等于1,再次执行 else语块,此时 wing(n-1)+n ==  wing(9-1=8)+19=27  ,所以再次执行 wing函数,而此时的初始值是8 ,继续执行

    else 语块,此时 wing(n-1)+n == wing(8-1)+ 27······依次循环直到 n==1

    ······························································不知道对不对,请点评

C语言入门

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

926020 学习 · 20793 问题

查看课程

相似问题