查看所有50道基础算法题请看:
Java的50道基础算法题
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
package Demo17Monkey_Eat_Peach;
public class Monkey_Eat_Peach {
/**
* 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
* 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
* 以后每天早上都吃了前一天剩下的一半零一个。
* 到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
*/
/*
分析:第10天剩下1个桃子,其实是第9天它吃过了第8天剩下的一半又吃了一个后剩下的
那么,倒过来算,第9天还没吃之前应该是(1+1)*2,当天还没吃之前的桃子数是吃过之后剩下的
桃子数加上一再乘以二。
*/
public static void main(String[] args) {
// 定义一个变量来记录总桃子数,第9天晚上剩下1个
int sum =1;
// 逆向计算,一直算出第1天还没吃之前的桃子数
for(int i =9;i>=1;i--){
sum=(sum+1)*2;
}
System.out.println("该猴子第一天共摘了"+sum+"个桃子。");
}
}