java经典问题-猴子吃桃

java经典问题-猴子吃桃

java经典问题-猴子吃桃

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

采用数学上的函数公式来解决
假设天数为n。当然是int型,不可能有小数哈
f(n)代表计算桃子的数量
根据题目提供的信息可得

1,f(10)=1,当n为10的时候,桃子还有1个
2,每天吃了一半,还不过瘾,又多吃了一个

那就好办了。
f(1) / 2 - 1 = f(2)
f(2) / 2 - 1 = f(3)
f(3) / 2 - 1 = f(4)
.
.
f(10) = 1
结束递归

套用公式就是
f(n) / 2 - 1 = f(n + 1),n为1-10的自然整数int
适合用 程序来递归计算

public class diguihouzichitao {
    public static void main(String[] args) {
        for(int i=10;i>=1;i--){       //for循环逐行输出第n天桃子的数量
            System.out.println("猴子第"+i+"天总共有"+cacltaozi(i)+"只桃子");
        }

    }

    //定义一个方法,命名为cacltaozi,参数n
    public static int cacltaozi(int n){
        if(n==10){            //n为10,程序的递归终点
            return 1;
        }else {
            return  2*cacltaozi(n+1)+2;     //递归公式     f(n)/2-1 = f(n+1)
        }                                     //转换一下就是  f(n) = 2*f(n+1)+2
    }
}

运行结果

猴子第10天总共有1只桃子
猴子第9天总共有4只桃子
猴子第8天总共有10只桃子
猴子第7天总共有22只桃子
猴子第6天总共有46只桃子
猴子第5天总共有94只桃子
猴子第4天总共有190只桃子
猴子第3天总共有382只桃子
猴子第2天总共有766只桃子
猴子第1天总共有1534只桃子

Process finished with exit code 0
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lixiangliuyi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值