为什么答案里面是倒着打印而不是从第一天开始打印

来源:5-8 递归函数(二)

qq_Sugar_rwGJ05

2018-10-02 11:01

#include <stdio.h>
int getPeachNumber(n)
{
    int num;    //定义所剩桃子数
    if (n == 10)
    {
        return 1;//递归结束条件
    }
    else
    {
        num = 2*(getPeachNumber(n+1)+1);   //这里是不应该用递归呢?
        printf("第%d天所剩桃子%d个\n", n, num); //天数,所剩桃子个数
    }
    return num;
}
int main()
{
    int num = getPeachNumber(1);
    printf("猴子第一天摘了:%d个桃子。\n", num);
    system("pause");
    return 0;
}

写回答 关注

2回答

  • 粗实而夜雨
    2018-10-07 16:52:38

    数据结构栈中数据是先进后出的,递归也是一样的,因此是倒着打印的,可以百度一下仔细看一下

  • 慕斯卡5398632
    2018-10-03 13:07:22

    在此代码的递归中getPeachNumber(n+1)(简称为g(n))num=(g(n+1)+1)会使函数一直调用自己 当n==10的时候会得到一个返回值1并返回给g(9)当g(9)得到返回值后就会向下执行printf,执行完后再把值返回给g(8),g(8)再执行printf 以此类推 所以是倒过来打印的


C语言入门

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

926021 学习 · 20793 问题

查看课程

相似问题