转载请标明出处:http://blog.youkuaiyun.com/yuqing_1102/article/details/56013226
1.算法描述:
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾就多吃了一个。第二天早上又将剩下的桃子吃了一半,还是不过瘾又多吃了一个。以后每天都吃前一天剩下的一半再加一个。到第10天刚好剩一个。问猴子第一天摘了多少个桃子?
2.分析
这是一个很经典的递归算法,只要找到递归公式就迎刃而解
第n天桃子总数 - (第n天桃子总数/2 + 1) = 第n+1天桃子总数
S1 = 2(S2 + 1)
S2 = 2(S3 + 1)
...
Sn = 2(S(n+1) + 1)
3.算法:
public class TestPeach {
public static void main(String[] args) {
System.out.println(sumPeach(1));
}
/**
* 递推算法
* @param day 第n天
* @return 第n天桃子总数
*/
private static int sumPeach(int day){
if (day == 10) {
return 1;
}
return 2 * (sumPeach(day+1)+1);
}
}