为了账号安全,请及时绑定邮箱和手机立即绑定

递归函数不太理解

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


正在回答

2 回答

  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. 我说的不太明白,希望题主能看懂吧。

7 回复 有任何疑惑可以回复我~
#1

慕瓜0592510 提问者

谢谢啦
2018-11-19 回复 有任何疑惑可以回复我~

茅塞顿开!


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926207    人
  • 解答问题       20797    个

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

进入课程

递归函数不太理解

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信