求解答:“递归函数中,位于递归调用后的语句的执行顺序和各个被调用函数的顺序相反”这句话在语句的执行中的具体意思

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

很社会的太阳

2018-11-26 16:21

求解释的详细点

谢谢大家

写回答 关注

2回答

  • w鲜花哥哥w
    2018-12-04 21:56:11

    哥,你头像好骚啊

    w鲜花哥哥w 回复很社会的太阳

    哈哈。可以果然很社会

    2018-12-05 16:17:27

    共 2 条回复 >

  • 坠入时空
    2018-11-27 14:54:43
    int getPeachNumber(int n){    int num;    //定义所剩桃子数
        if(n==10)
        {       
            return 1;
        } 
        else
        {
            num = (getPeachNumber(n+1)+1)*2;   //这里是不应该用递归呢?
            printf("第%d天所剩桃子%d个\n", n, num); //天数,所剩桃子个数
        }    
        return num;
    }

    就以试题的递归函数来说:

    if(n==10)

    这个判断语句,在调用递归之前,属于递归调用前的语句,这没问题吧。

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

    这句输出函数,在调用递归之后,属于递归调用后的语句,这没问题吧。


    关于各个被调用函数的顺序是什么样的呢?

    我们从 

    int num = getPeachNumber(1);

    开始看,传入的参数是 1,而递归终结是 n = 10。所以说各个被调用函数的顺序应该是从 1 往 10 依次递增的。


    其中 if(n==10) 这句判断语句就是按照从 1 往 10 依次判断的。所以说:位于递归调用前的语句和各级被调用函数具有相同的执行顺序;


    而 我们再看 

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

    它输出 n 的顺序却是从 10 到 1 依次递减。所以说:位于递归调用后的语句的执行顺序和各个被调用函数的顺序相反;

C语言入门

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

926210 学习 · 20797 问题

查看课程

相似问题