猴子吃桃子问题: 有一堆桃子,猴子第一天吃了其中的一半,结果又吃了一个!以后每天猴子都会吃掉其中的一半,然后再多吃一个,当到第十天想再吃时,发现只剩下1个桃子了。请问最初共有多少个桃子?
思路:设总桃子数为x,猴子每天吃的桃子数为前一天剩下的桃子的一半再加1。
即第一天(day1)吃: + 1 , 剩:x-(
+ 1 )=
- 1
day2吃: ( - 1)*
+1 =
+
, 剩:
- 1-(
+
)=
-
...
day10吃:?? 剩:1
由上述关系可知剩的桃子数:
day9 = day10* 2 + 2 = (day10 + 1)* 2 = 4;
day8 = (day9 + 1)* 2 ;
day7 = (day8 + 1)* 2;
找出规律:day n = (day(n+1)+1)*2;
由java代码递归实现:
public class Test{public static void main(String[] args){Monkey m = new Monkey();int day = 1; //设定天数为1,求出总桃子数int peachNum = m.peach(day);if (peachNum != -1){System.out.println("第"+day+"天:"+ peachNum +"个桃子"); //输出第几天剩几个桃子}}
}
class Monkey{ //递归方法 : 由第一天推到第十天所剩的桃子数,再由第十天反推回到第一天public int peach(int day){if(day == 10){ //当设定天数为第十天的时候,桃子数为1,return 1;}else if(day >= 1 && day <=9){return (peach(day+1)+1)*2; // 设定天数在2-9天时按照递归原则计算}else{System.out.println("天数在1-10范围内"); //设定天数不符合题目时提示return -1;}}}













