问答详情
源自:5-7 递归函数(一)

递归函数 关于n==1

#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呢????????? 卡在这里了 想不明白

提问者:慕仰103958 2018-11-22 01:09

个回答

  • 慕码人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