JAVA算法:猴子吃桃子(JAVA版本算法)

本文介绍了猴子吃桃问题的JAVA版本算法。通过倒推法分析,得出在不同天数(奇数或偶数)下猴子剩余桃子的数量,并通过递归方程求解初始桃子总数。当剩余桃子为1时,计算出第一天猴子共摘了多少个桃。
摘要由CSDN通过智能技术生成

JAVA算法:猴子吃桃子(JAVA版本算法)

问题描述

猴子吃桃子 有一只猴子第一天摘了很多桃,觉得很高兴就立刻吃了桃总数的一半,然后觉得没吃饱又吃了3个。猴子感觉这样吃桃会立刻没有,于是就定下一个规矩: 

  • 每次在奇数天吃剩余桃总数的一半再多加3个
  • 每次在偶数天吃剩余桃的总数的一半再多吃一个。

请输入一个天数,使得该天数的剩余桃数正好为1,请输出猴子第一天共摘了多少个桃?


问题分析

我们采用“倒推法”,来寻找规律:

第1天:猴子摘了N个桃子;

第2天:剩余桃子数量为1,倒推第1天的情况。N/2 - 3 = 1 ,则 N = 8;

第3天:剩余桃子数量为1,倒推第2天的情况。N_2/2 - 1 = 1,则 N_2 = 4; 那么第1天的情况:N_1/2-3 = 4;则 N_1 = 14;

反过来想:

设输入的天数为n; 首先,找到问题入口: 
第1天时, 求剩余桃数:F(1) ; 其次,找到问题的递归方程,
在本题中,递归方程有两个:
若n天为奇数天:有F(n) = (F(n+1)+3)*2 
若n天为偶数天:有F(n) = (F(n+1)+1)*2 
其中,奇数天与偶数天相互递归。
最后,问题结束:当程序

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值