- package com.itheima.bbs.peach;
- public class PeachTest {
- /**
- * 猴子吃桃的问题:猴子第一天摘下来N个桃子,当天就吃了一半,但是还不过瘾,又多吃了一个,第二天早上又将
- * 剩下的桃子吃了一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个,
- * 到第十天早上的时候就发现剩下一个桃子了.求第一天一共摘下了多少桃子呢?
- */
- public static void main(String[] args) {
- //i代表第几天,m代表吃完剩下的桃子数目
- int i,m;
- //n代表第一天一共摘的桃子数目
- int n=1;
- //布尔变量,控制跳出循环
- boolean flag = false;
- while(true){
- n++;
- m=eatPeach(n);
- //由于第一天的桃子已经吃了(就是上一句),所以从第二天开始循环,直到第10天,如果桃子数目正好是1个,则当时的n就是正确结果
- for(i=2;i<11;i++){
- m=eatPeach(m);
- if(m==1){
- //如果吃后剩下的桃子数目是1个,还要判断是第几天
- if(i==10){
- flag = true;
- }else{
- //跳出for循环
- break;
- }
- }
- }
- if(flag){
- System.out.println("猴子第一天一共摘下了"+n+"桃子");
- //跳出while循环
- break;
- }
- }
- }
- //猴子每次吃后剩下m个
- public static int eatPeach(int n){
- int m;
- m = n/2-1;
- return m;
- }
- }
复制代码 运行结果:猴子第一天一共摘下了3070桃子
虽然晚了,但是还是发出来,请赐教。呵呵
|