求解惑啊被困扰好几天了!

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

慕仰103958

2018-11-19 22:38

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

}

每一次调用n的值分别变成了多少啊,求举几个列子

比如 n=10 的时候

(10-1)+10=19

那么第二次循环n的值分别为多少啊,我只能看懂第一个

写回答 关注

3回答

  • 最喜欢你啦
    2018-11-21 22:01:37

    第二个的n值就是当前函数里面刚开始时候括号里面的值,

  • 最喜欢你啦
    2018-11-21 20:48:08

    我理解的就是,,,一直循环使用自身,但是值不一样,第一次的n是10 第二次的n就相当于上个的n-1,也就是9,第三次的n就是9-1,也就是8,第四次的n就是8-1,也就是7~~~~~~~一直到最后一次的时候的n的值是1,就直接返回1,然后在开始往回走,慢慢的每个n值相加,最后就是相加的值,emmmmmm我不会堆栈什么的,我自己理解的,就是嗯,一层一层套,慢慢的就套出了答案。

    慕仰1039...

    我给你想的差不多,不过第二个n的值是怎么变化的呢?就是(n-1)+n 后边这个n

    2018-11-21 21:52:50

    共 1 条回复 >

  • Andd_Dev
    2018-11-20 16:15:47

    首先你要理解什么是递归。

    递归属于逆向思维,我们平常的思维方式属于递推,也就是从1到100。

    如何知道到第N天小明学会了多少个单词?很简单啊,昨天学会的加上今天的天数就是了嘛。

    那昨天学会了多少?很简单啊,前天学会多少加上昨天的天数不就知道了吗?

    那前天学会了多少怎么知道呢?同上。

    我们只需关心本次的结果即可。

    慕仰1039... 回复Andd_D...

    嗯,太谢谢了。共同努力

    2018-11-20 17:07:46

    共 9 条回复 >

C语言入门

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

926021 学习 · 20793 问题

查看课程

相似问题