递归函数 关于n==1

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

慕仰103958

2018-11-22 01:09

#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;

}

前面已经算出10+9+8······+1

最后当n==1的时候结束了循环,那为什么返回的结果不是1 而是55呢????????? 卡在这里了 想不明白

写回答 关注

1回答

  • 慕码人9509864
    2018-11-22 19:53:32

    当n==1的时候确实结束了循环且结果为1,但仅仅结束的循环是getwordnumber(1)

    在这循环外应该是getwordnumber(2)+3

    其中getwordnumber(2)=getwordnumber(1)+2

    因此类推getwordnumber(3)=getwordnumber(2)+3...

                ...getwordnumber(10)=getwordnumber(9)+10

    全部翻译过来就是1+2+3+4+...+10

    慕仰1039...

    g感谢感谢看懂了

    2018-11-27 05:17:19

    共 1 条回复 >

C语言入门

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

924613 学习 · 20763 问题

查看课程

相似问题