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

关于函数的两个问题,在括号里。

#include <stdio.h>

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

{

    int num;    

    if(n==10)

    {

       return 1;      (这里的return1是什么意思?)

    } 

    else

    {

        num = (getPeachNumber(n+1)+1)*2;                    (为什么会自己加到10而不是更多,因为前面n==10吗,为什么是因为那个?)

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

    }

    return num;

}

int main()

{

    int num = getPeachNumber(1);

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

    return 0;

}


提问者:慕娘7048410 2016-12-02 11:45

个回答

  • 慕粉1704140
    2016-12-03 22:52:41


    当n=1时   2*(1+getPeachNumber(1+1))

    当n=2时   2*(1+getPeachNumber(2+1))

    当n=3时   2*(1+getPeachNumber(3+1))

    当n=4时   2*(1+getPeachNumber(4+1))

    当n=5时   2*(1+getPeachNumber(5+1))

    当n=6时   2*(1+getPeachNumber(6+1))

    当n=7时   2*(1+getPeachNumber(7+1)) 
    当n=8时   2*(1+getPeachNumber(8+1))   

    当n=9时   2*(1+getPeachNumber(9+1))

    当getPeachNumber(9+1)=getPeachNumber(10)
    因为  n=10

    return 1;

    所以   getPeachNumber(10)=1

    为什么会加1 

    因为(n+1)看成一个整体

    所以
    当n=9时   2*(1+getPeachNumber(9+1))=4

    依次往上推就可得到第一天的;这就是递推的本意


  • qq_刨哊丶_0
    2016-12-02 14:11:43

    return 1;  表示返回1.  我的理解为:前面n==10 定义啦第十天只有一个桃子,一次往前推n=9、n=8、、、而不是从n=1开始慢慢到n=10.