问题: 有一堆桃子,猴子第一天吃了一半,并且再多吃了一个。以后每天猴子都吃了一半,然后再多吃一个。当到第10天想再吃桃子时(还没吃),发现只有一个桃子,问:开始一共有多少个桃子?
分析:
第10天 桃子 = 1个
第9天 桃子 = (第10天的桃子数 + 1)* 2 = (1+1)*2 = 4个
第8天 桃子 = (第9天的桃子数 + 1)* 2 = (4+1)*2 = 10个
第n天(n>=1)桃子 = ((n+1)+1) * 2
public class Recursion{
public static void main(String[] args) {
T t = new T();
int day = 1;
int peachNum = t.peach(day);
if (peachNum != -1) {
System.out.println("第" + day + "天,有" + peachNum + "个桃子");
}
}
}
class T {
public int peach(int day) {
if (day == 10) {
return 1; // 第10天,只有一个桃子
} else if (day >= 1 && day <= 9) {
return (peach(day + 1) + 1) * 2; // 前一天桃子数 = (后一天桃子数 + 1)* 2
} else {
System.out.println("day 应该再 1-10 之间");
return -1;
}
}
}