答案为:1534个。
package algorithm; public class Monkey { public static void main(String[] args) { /* * 猴子吃桃问题: * * 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个, * 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃前一天剩下的一半零一个。 * 到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少个桃子? * * 答案为:1534个。 */ calc(); worstCalc(); } public static void calc() { // 第一天吃掉一半 + 1个 // 依次类推十天 // 第十天发现剩 一个 int num = 1;// 桃子数量 for (int day = 9; day >= 1; day--) { num = 2 * (num + 1); } System.out.println(num); } // 最差的做法 public static void worstCalc() { int peach = 0; // 桃子 while (true) { int tempPeach = ++ peach; // 1 2 3 ... 1000 ... int day; for (day = 1; day <= 9; day++) { tempPeach = tempPeach / 2; tempPeach --; if( tempPeach <= 0 ) { break; } } if(day == 10 && tempPeach == 1) { break; } } System.out.println(peach); } }附执行结果如下:
1534 1534
