/* 猴子吃桃子问题:有一堆桃子,猴子第一天吃了其中的一半,并再多吃了一个! 以后每天猴子都吃其中的一半,然后再多吃一个。当到第 10 天时, 想再吃时(即还没吃),发现只有 1 个桃子了。问题:最初共多少个桃子?
package chapter07;
public class RecurisonExercise02 {
//猴子吃桃问题
/*思路分析:逆推
* day = 10 1个桃子
* day = 9 有 (day10 + 1) * 2 = 4
* day = 8 有 (day9 + 1) * 2 = 10
* ...
* day 1 1个
* 前一天桃子数 = (后一天个数 + 1) *2
* */
public static void main(String[] args) {
int day = 1;//n是天数
M m = new M();
int peachNum = m.eat(day);
if(peachNum != -1) {
System.out.print("第" + day + "天有" + peachNum + "个桃子");
}
}
}
class M{
public int eat(int day) {
if(day == 10) {
return 1;
}
else if( day >= 1 && day <= 9) {
return (eat(day + 1 ) + 1) * 2;
}
else {
System.out.println("day在 1- 10" );
return -1;
}
}
}