猴子吃桃子问题:有一堆桃子,猴子第一天吃了其中的一半,并多吃了一个! 以后每天猴子都吃其中的一半,然后再多吃一个。当到第10天时, 想再吃时(即还没吃),发现只有一个桃子了。问题:最初共多少个桃子?
1 public class exercise02{ 2 public static void main(String[] args){ 3 4 /* 5 猴子吃桃子问题:有一堆桃子,猴子第一天吃了其中的一半,并多吃了一个! 6 以后每天猴子都吃其中的一半,然后再多吃一个。当到第10天时, 7 想再吃时(即还没吃),发现只有一个桃子了。问题:最初共多少个桃子? 8 9 思路分析 逆推 10 1.day = 10时 有1个桃子 11 2.day = 9时 有(day10 + 1)*2 = 4 12 3.day = 8时 有(day 9 + 1)*2 = 10 13 4.规律就是 前一天的桃子 = (后一天的桃子 + 1)*2//就是我们的能力 14 5.递归 15 */ 16 T t1 = new T(); 17 int day = 9; 18 int peachNum = t1.peach(day); 19 if(peachNum != -1){ 20 System.out.println("第"+ day +"天有"+ peachNum + "个桃子"); 21 } 22 } 23 } 24 25 26 class T{ 27 public int peach(int day){ 28 if(day == 10){//第10天,只有1个桃 29 return 1; 30 31 }else if(day >= 1 && day <= 9){ 32 return(peach(day + 1) + 1)*2;//规则 33 }else{ 34 System.out.println("day 在 1-10"); 35 return -1; 36 } 37 } 38 39 40 }