问答详情
源自:5-8 递归函数(二)

看不懂这句话

递归函数中,位于递归调用前的语句和各级被调用函数具有相同的执行顺序  这句怎么理解?

提问者:慕函数409345 2017-11-03 19:08

个回答

  • AhTeng
    2017-11-03 22:25:45
    已采纳

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

    当第一个变量n进入getPeachNumber递归函数时,首先变量n会先进入if 函数,不符合后进入else执行代码块。递归调用语句 num = (getPeachNumber(n+1)+1)*2; 中“getPeachNumber(n+1)”相当于再次进入函数getPeachNumber,这里n+1 相当于次级变量,它像变量n一样首先要进入if函数进行判断,然后执行其余代码块。这就是“位于递归调用前的语句和各级被调用函数具有相同的执行顺序”的意思。 

  • 消灭全体成员
    2017-12-27 10:32:00

    num = getPeachNumber(n+1)*2+2;