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

递归函数的特点,3 和 4 没明白,小白。有大神能通俗的帮我理解下吗?采纳加分

  1. 递归函数中,位于递归调用前的语句和各级被调用函数具有相同的执行顺序;

  2. 递归函数中,位于递归调用后的语句的执行顺序和各个被调用函数的顺序相反;


正在回答

1 回答

#include <stdio.h>

a=0;

int getPeachNumber(n)

{

    int num;    //定义所剩桃子数

    printf("第%d次\n",a++);

    if(n==10)

    {

       return 1;       //递归结束条件

    }

    else

    {

        num = (getPeachNumber(n+1)+1)*2;   //这里是不应该用递归呢?

        printf("第%d天所剩桃子%d个\n", n, num); //天数,所剩桃子个数

    }

    return num;

}

int main()

{

    int num = getPeachNumber(1);

    printf("猴子第一天摘了:%d个桃子。\n", num);

    return 0;

}


运行一下这个程序

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

坚持下去灬 提问者

我就是看了这个脚本不明白才想可能和这个相关的。脚本我都可以理解,就是他的输出,为什么是反向输出的 按我对理解赢是输出 第9天所剩桃子4个 猴子第一天摘了:1534个桃子。 因为到了9 循环就结束输出了, 为啥还会输出 第8天 第7天。。。。
2019-08-27 回复 有任何疑惑可以回复我~
#2

小小疾飞 回复 坚持下去灬 提问者

你把对递归定义的理解用自己的话说一遍,再运行这个脚本。观察代码,就知道了。
2019-08-27 回复 有任何疑惑可以回复我~
#3

坚持下去灬 提问者 回复 小小疾飞

递归到9的时候 9+1=10 终止循环 然后printf 第9天4个桃子, 为啥还会打印8765天的 不是已经终止循环了吗
2019-08-28 回复 有任何疑惑可以回复我~
#4

小小疾飞 回复 坚持下去灬 提问者

你按我的来嘛,递归简单说就是函数自己调用自己。那么调用了这么多次,怎么会说结束就结束呢。一层一层的,一直到第一次调用结束才结束嘛。你说是不是?
2019-08-28 回复 有任何疑惑可以回复我~
#5

weixin_慕勒9147260 回复 坚持下去灬 提问者

看示意图,先是递推把结果算出不printf然后在反过来printf出结果
2019-08-29 回复 有任何疑惑可以回复我~
#6

慕仙3012425

每一次循环都有printf,循环到9
2019-10-19 回复 有任何疑惑可以回复我~
查看3条回复

举报

0/150
提交
取消

递归函数的特点,3 和 4 没明白,小白。有大神能通俗的帮我理解下吗?采纳加分

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