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

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

#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 回答

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

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

我跟你有一样的困惑

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

这个答案也不是55额

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

这是我的猜想

因为 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

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

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

举报

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

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

进入课程

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

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