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

能详细解释一下这个代码吗?还有 num = (getPeachNumber(n+1)+1)*2怎么解读?

#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;
}
int main()
{
    int num = getPeachNumber(1);
    printf("猴子第一天摘了:%d个桃子。\n", num);
    return 0;
}

正在回答

1 回答

题目问第一天共摘下来多少个桃子?并反向打印每天所剩桃子数。

首先,你定义了一个函数来帮你计算在某天还剩多少桃子,这个函数的名字叫 getPeachNumber(n)。这个函数里面有一个参数 n,用n来表示第几天。比如n=10,就表示第十天,n=9,就表示第九天。

然后,这个问题是让我们求桃子的数量,所以你还需要定义一个参数 num,用来定义所剩桃子数量。

根据题目要求,第n天桃子的数量干掉一半再减去一个,就是第n+1天的桃子数量。所以 第n+1天桃子数量先加1再乘2,就是第n天的桃子数量。

已知第10天时候桃子数量为1。所以getPeachNumber(10)=1。

同理,第9天所剩桃子数量 num = getPeachNumber(9) = (getPeachNumber(10)+1)*2

第8天所剩桃子数量 num = getPeachNumber(8) = (getPeachNumber(9)+1)*2

以此类推.........

int getPeachNumber(n)  //定义函数,n表示第几天
{
    int num;    //定义所剩桃子数
    if(n==10) //条件判断如果在第10天的时候,
    {
       return 1;       //递归结束条件(就是题目中给的已知条件,第10天时候桃子还剩1个)
    } 
    else //判断条件,在不是第十天的时候
    {
        num = (getPeachNumber(n+1)+1)*2;   //函数中自己调用自己,就是递归。看最后回答你的第二个问题。

        printf("第%d天所剩桃子%d个\n",n ,num);  //打印语句,打印每天所剩桃子数    }
    return num;  //将num的值返回给函数。
}

int main() //程序主函数
{
    int num = getPeachNumber(1); //这里要通过你定义的函数来计算,在第一天时候桃子数量。
    printf("猴子第一天摘了:%d个桃子。\n", num);
    return 0;
}


 num = (getPeachNumber(n+1)+1)*2;   //函数中自己调用自己,就是递归。这里回答你的第二个问题。

本题中的运算基本集中在这里。例如,要想求n=9时候的num值,需要根据n=10的num值来计算,getPeachNumber(9) = (getPeachNumber(10)+1)*2;求n=8时候的num值,需要根据n=9的num值来计算,第8天所剩桃子数量 num = getPeachNumber(8) = (getPeachNumber(9)+1)*2。以此类推,相求第n天的num值,需要根据第n+1天的num值来计算。每计算一次,都需要调用一次这个函数。

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

不论num,还是getPeachNumber(n),都看做是一个字就可以,他的原理很简单, 

a =(b+1)*2;   b=(c+1)*2;    c=(d+1)*2; d=1。让你求a。


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

慕娘6268485 提问者

非常感谢!
2018-08-21 回复 有任何疑惑可以回复我~
#2

feelfo

大佬....
2018-09-01 回复 有任何疑惑可以回复我~
#3

要死综合征晚期 回复 feelfo

你的头像有丶东西
2018-09-02 回复 有任何疑惑可以回复我~
#4

CSDN小菜鸟

very well ! thank you !
2018-09-16 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消

能详细解释一下这个代码吗?还有 num = (getPeachNumber(n+1)+1)*2怎么解读?

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