为了账号安全,请及时绑定邮箱和手机立即绑定

java经典50题

java经典50题

狼顾之相1995 2016-10-02 19:19:01
【程序17】题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。程序分析:采取逆向思维的方法,从后往前推断。
查看完整描述

3 回答

已采纳
?
汉江怪人

TA贡献50条经验 获得超11个赞

public class Monkey {
	static int jisuan(int day){
		if(day==1) return 1;
		else return (jisuan(day-1)+1)*2;
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(jisuan(10));
	}
}

输出结果为1534 第一天共摘了1534个桃子

查看完整回答
反对 回复 2016-10-02
?
风中打伞的小孩

TA贡献73条经验 获得超20个赞

        int n=1;
		for(int i=0;i<9;i++)
		{
			n=2*(n+1);
		}

1534

查看完整回答
反对 回复 2016-10-03
?
王大厉

TA贡献58条经验 获得超11个赞

public static void main(String[] args) {
	/*	正推*/
	int x;//第一天摘下的桃子
	final double a=1.5;	//稳定下来每天的量
	for(double i=1;;i++){
		if((i*1.0/2+1)+((i-(i*1.0/2+1))/2+1)+7*1.5+1==i){//判断这10天吃的桃子量是否等于第一天摘下来的桃子总和
			x=(int)i;
			System.out.println(i);
			break;
		}
	}
	System.out.println("总共摘了:"+x+"个桃子");
	//反推
	double m=1+1.5+1.5+1.5+1.5+1.5+1.5+1.5;//10-3天的桃子
	System.out.println("第二天余量:"+m);
	double n=(m+1)*2;
	System.out.println("第一天余量:"+n);
	double k=(n+1)*2;
	System.out.println("第一天摘下的桃子总和:"+k);
	
}


查看完整回答
反对 回复 2016-10-02
  • 汉江怪人
    汉江怪人
    吃了一半不是吃了半个桃子,一半零一个也不是1.5个桃子,没有吃半个桃子的情况吧,一半就是桃子总数的一半吧。
  • 王大厉
    王大厉
    233333333 语句产生歧义了啊
  • 3 回答
  • 2 关注
  • 1473 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信