为了账号安全,请及时绑定邮箱和手机立即绑定

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

#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;

}


正在回答

3 回答


当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

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


0 回复 有任何疑惑可以回复我~
#1

夜半饮酒

为什么要2乘与后面的那些呢,括号里面为什么要1加 getpeachnumber ?????求解
2016-12-27 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信