黑马程序员技术交流社区
标题:
java面试题 ,你是否会做? 递归之-------猴子吃桃
[打印本页]
作者:
wolfking0608
时间:
2016-10-8 21:05
标题:
java面试题 ,你是否会做? 递归之-------猴子吃桃
/*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);
}
}
作者:
小明教授
时间:
2016-10-8 22:00
结果是多少
作者:
IceLoveInFire丶
时间:
2016-10-8 22:45
感觉循环就可以做吧?需要递归嘛。。。
作者:
kaka3208c
时间:
2016-10-9 15:33
1023么?
作者:
barny
时间:
2016-10-9 16:35
貌似不用递归也可以吧
作者:
792241113
时间:
2016-10-9 17:15
这个好
作者:
792241113
时间:
2016-10-9 17:17
又找了一道题练习 =不错
作者:
792241113
时间:
2016-10-9 17:42
public static void main(String[] args) {
int d=10;
int s=1;
int sum=method(d,s);
System.out.println(sum);
}
private static int method(int d,int s) {
if (d==1){
return s;
}else{
return method((d-1),s=2*(s+1));
}
}
最后吃了1534个 你要先+1在*2 因为是二倍吃的一半,,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2