黑马程序员技术交流社区

标题: 让技术飞,每日一题 [打印本页]

作者: 钟林杰    时间: 2013-4-16 06:15
标题: 让技术飞,每日一题
/*
        让技术飞,每日一题:
        今天这题也是来自于自考书上的题目,大家一起来试试吧,提高提高逻辑思维能力,
        让你变得更聪明,让你的算法变得更精辟,让你的程序变得更高效。
        题目:
        草地上有一堆苹果,有一只猴子每天吃这堆苹果的一半又一个,5天后刚好吃完这堆苹果。
        问这堆苹果原来共有多少个?猴子每天吃多少个?
(我的答案会在你回答之后公布哦! )

*/
[hide=d10]class Test
{
                public static void main(String args[])
                {
                        //首先我设了5个变量,分别是代表每一天未吃前的苹果数量
                        /*
                        apple1初始化为5的两个原因:
                        1、是因为总共有五天,它每天吃苹果至少一个,也就是一定会大于5.
                        2、是因为如果是1的话由于使用的是整数类型,运算第一天的时候就会进入死循环。       
                        */
                        int apple1 = 5,apple2 = 0,apple3 = 0,apple4 = 0,apple5 = 0;
                       
                        while(true)                                //利用一个无限循环让苹果的数量一直增加,直到符合条件位置才停止
                        {

                                apple2 = apple1/2-1;                                                //第一天剩余的苹果
                                apple3 = apple2/2-1;                                                //第二天剩余的苹果
                                apple4 = apple3/2-1;                                                //第三天剩余的苹果
                                apple5 = apple4/2-1;                                                //第四天剩余的苹果
                                if((apple5/2-1)==0)                                                        //判断苹果是否在第五天吃完
                                                break;
                                apple1++;                       
                        }
                        System.out.println("苹果共有:"+apple1+"个!");
                        System.out.println("第一天吃了:"+(apple1-apple2)+"个!");
                        System.out.println("第二天吃了:"+(apple2-apple3)+"个!");
                        System.out.println("第三天吃了:"+(apple3-apple4)+"个!");
                        System.out.println("第四天吃了:"+(apple4-apple5)+"个!");
                        System.out.println("第五天吃了:"+(apple5-0)+"个!");
           }   
}[/hide]


作者: 丘凤光    时间: 2013-4-16 07:42
应该是用递归的方法处理
作者: 张玉保    时间: 2013-4-16 07:56
where is the answer
作者: 梁耀今    时间: 2013-4-16 08:16
class AppleDemo
{
        public static void main(String[] args)
        {
                int apple=0;
                for(int x=0; x<5; x++)
                {
                        apple = (apple + 1)*2;
                }

                System.out.println(apple);
        }
}
很无聊
作者: 梁耀今    时间: 2013-4-16 08:18
楼主,怪不得你说会锻炼思维,你连反向思维都不会,哎!!!!!!
作者: 钟林杰    时间: 2013-4-16 08:29
梁耀今 发表于 2013-4-16 08:18
楼主,怪不得你说会锻炼思维,你连反向思维都不会,哎!!!!!!

:sleepy:是啊,太少练了,惯性!
作者: 钟林杰    时间: 2013-4-16 08:32
张玉保 发表于 2013-4-16 07:56
where is the answer

:sleepy:这么大个红色字体也没看到啊!
作者: chensc    时间: 2013-4-16 08:52
学习学习!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2