/*10、猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,
* 又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。
* 到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
* 耗时:7分半
* 心态: 一般
* 代码效率 :2.5行/分
* 思路分析以及时间:
* 先求出第二天的桃子数
* 把循环做好,然后在求出第10天的桃子数量.
* 第二天的桃子数为 x/2-1=1
* x=2*(1+1)
* 外层循环线条件先定义天数,然后只让他循环一次,就得出了初始化值.
* */
public class 猴子吃桃 {
public static void main(String[] args) {
//demo01();
//用递归做
int k =digui(10,1);
System.out.println(k);
}
/*首先明确返回值类型
* 最终的结果 int
* 第二明确参数列表
* 第一个是天数,第二个是最后剩下的个数
* 里面怎么写
* 先写已知条件 最后一天的数量
* 再把这个放在一个循环中,返回值只让他循环完毕后,才返回.
*
* */
public static int digui(int day, int num){//尾递归
if(day==1){
return num;
}else{
num=2*(num+1);
return digui(day-1,num);
}
}
private static void demo01() {
int x =1;
for (int i = 1; i < 10; i++) {//2,
x=2*(x+1);
}
System.out.println(x);
}
}
|
|