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

递归函数不太理解

  1. return getWordNumber(n-1)+n

是否可以理解为数学中f(n)+f(n+1)

2.这个函数是如何进行循环的,控制结束的是哪一步?

3.是否可以把例题的循环过程用文字讲一下

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


提问者:慕瓜0592510 2018-11-17 08:28

个回答

  • 肿么肥事
    2018-11-17 18:25:50
    已采纳

    1. return getWordNumber(n-1)+n,这一句的意思是数学中的f(x)=f(x-1)+x。

    2. 你在1.中的代码只有一句并不能结束,在原题的例子中,n>1时会自动在factorial(n)中运行factorial(n-1),而factorial(n-1)中又会运行factorial(n-2),直到运行到第k层即函数中不会再运行下一个函数为止(也就是n已经被逐步减到1为止)。

    3. (题主的代码和例子不一样我就拿例子来说)主函数中n=5,factorial(n)函数执行“else”语句,执行else语句时包含factorial(n-1)即factorial(4).factorial(4)还是执行else语句,其中包含factorial(3)就这样一层一层执行直到执行factorial(1).factorial(1)执行不再执行else语句而是else if语句,不再调用factorial()这个函数,便不再循环。之后结束factorial()中的if进入return。即整个函数运行完毕。

    4. 我说的不太明白,希望题主能看懂吧。

  • 慕的地9393215
    2019-08-12 22:48:54

    茅塞顿开!