欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【视频+图文】Java经典基础练习题(六):猴子吃桃子问题

程序员文章站 2022-06-22 07:52:57
[TOC] 一、具体题目 猴子第一天摘下若干个桃子,当即 吃了一半 ,还不瘾,又 多吃了一个 第二天 早上又将 剩下的桃子吃掉一半 ,又 多吃了一个 。 以后 每天早上 都吃了 前一天剩下的一半零一个 。 到 第10天 早上想再吃时,见只 剩下一个桃子 了。求第一天共摘了多少个桃。 二、视频讲解 " ......

目录

一、具体题目

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

二、视频讲解

点击这里去b站观看

三、思路分析(逆向思维)

  • 10天时的桃子数:1
第10天桃子总数 1个
  • 9天桃子总数:4
    根据【以后每天早上都吃了前一天剩下的一半零一个。】
    我们可以先从1往上推测数字。
    我们可以做出以下假设:
假设第9天桃子数量为2 2-(2/2+1)= 0 不满足第10天还剩1个的条件
假设第9天桃子数量为3 3-(3/2+1) 除不尽,不满足条件
假设第9天桃子数量为4 4-(4/2+1)= 1 满足第10天还剩一个桃的条件

所以就可以确定第9天桃子总数为4

第9天桃子 第9天吃掉的桃子数 第9天剩余的桃子数
4 4/2+1=3 4-3=1

第10天桃子数第9天桃子数关联起来得到下面的式子:
4=1*2+1+1

  • 有了第9天桃子总数就可以求出第8天桃子总数
    根据题目中的条件列一个方程式:每天早上都吃了前一天剩下的一半零一个
    8天的桃子数=第8吃掉的桃子总数+第8剩余的桃子总数(第9天的桃子总数)
  • 因为第8天剩余的桃子会放到第9天去吃
  • 第8天剩余的桃子总数=第9天的桃子总数

设:第8天有桃子x个: x = (x/2+1)+4    x=10

即第8天有桃子10个

第8天桃子 第8天吃掉的桃子数 第8天剩余的桃子数
10 10/2+1=6 10-6=4

第9天桃子数第8天桃子数关联起来得到下面的式子:

10=4*2+1+1

  • 同理可以求出第7天桃子总数:
    7天的桃子数=第7吃掉的桃子总数+第7剩余的桃子总数(第8天的桃子总数)
    因为第7天剩余的桃子会放到第8天去吃
    第7天剩余的桃子总数=第8天的桃子总数

设:第7天有桃子x个: x = (x/2+1)+10    x=22

即第7天有桃子22个

第7天桃子 第7天吃掉的桃子数 第7天剩余的桃子数
22 22/2+1=12 22-12=10

第8天桃子数第7天桃子数关联起来得到下面的式子:

22=10*2+1+1

所以我们可以看出:

  • 第10天桃子数:1
  • 第9天桃子数:1*2+1+1=4
  • 第8天桃子数:4*2+1+1=10
  • 第7天桃子数:10*2+1+1=22

四、代码+结果

代码:

package exercise;

public class houzichitao {
	/*
	 * 第10天桃子数:1 
	 * 第9天桃子数:1*2+1+1=4 
	 * 第8天桃子数:4*2+1+1=10 
	 * 第7天桃子数:10*2+1+1=22
	 */
	public static void main(string[] args) {
		int m = 1;//第10天剩余的桃子数
		for (int i = 10; i > 0; i--) {//采用逆推的思维
			m = m * 2 + 1+1;
		}
		system.out.println(m);
	}

}

结果:

【视频+图文】Java经典基础练习题(六):猴子吃桃子问题

五、彩蛋

欢迎大家来公号 “小乔的编程内容分享站”
来找小乔玩~
一起学习java基础+算法~
还有更多资源等你来拿哦~

【视频+图文】Java经典基础练习题(六):猴子吃桃子问题