C语言经典算法【每日一练】09

猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将第一天剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第 10 天早上想再吃时,发现只剩下一个桃子了。

编写程序求猴子第一天摘了多少个桃子。

#include<stdio.h>
//第10天剩余num = 1
//第9天剩余num =  (第10天的num + 1) *2 =4
//第8天剩余num =  (第9天的num + 1) *2 = 10
//...
// )
void eatPeachNumber(){
    int  x1, x2=1;
   /// printf("%d \n", getPeachNumber(1));
    int day =9;
    while (day > 0) {
        x1 = (x2 + 1) * 2;
        x2 = x1;
        day--;
    }
      printf("%d \n", x1);
}
//递归实现
int getPeachNumber(int n){
    int  num = 1;
    if (n == 10) {
        printf("the %d day peachNumber=%d\n", n, num);
        return 1;
    } else {
        num = (getPeachNumber(n+1) + 1) * 2;//后一天的+1 的两倍等于前一天
        printf("the %d day peachNumber=%d\n", n, num);
    }
    return num;
}

int main()
{
   eatPeachNumber();
   getPeachNumber(1);
   return 0;
}

执行结果:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值