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

递归函数(二) 希望解惑

#include <stdio.h>

int getPeachNumber(int n)  //这里要定义n,要不编译器会报错!

{

    int num;    

    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;

根据 (getPeachNumber(n+1)+1)*2;    n=1

那第九天不是应该(1+1)+1)*2=6

有6个桃子吗,这4是怎么来的   纠结啊

提问者:慕仰103958 2018-11-22 01:20

个回答

  • qq_XT_15
    2018-12-20 14:23:18

    n+1不是n+1个桃子,而是代表第十天,getpeachnumber(n)为第九天时,n+1就是第十天所吃桃子的函数,不是单纯n+1

  • 慕函数5353813
    2018-11-24 10:39:05

    if(n==10)

        {

           return 1;      

        } 

    假设n=9

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

    所以第九天(getPeachNumber(n+1)+1)*2=(1+1)*2=4


  • 慕码人9509864
    2018-11-22 15:08:55

    第一天早上有1534个中午吃一半有767晚上吃一个有766个

    到第二天早上有766个中午吃一半有383晚上吃一个有382个

    以此类推到第九天早上有4个中午吃一半有2晚上吃一个有1个

    到第十天就剩下一个了