A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© maxwell247 中级黑马   /  2015-9-26 18:24  /  1041 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


从网上找到一份编程练习题,我决定将里面的题目全都做一遍。

/*
        题目:猴子吃桃问题。
        猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。
        第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
        以后每天早上都吃了前一天剩下的一半零一个。
        到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 ?
*/

/*
        分析:又看到了这个题目。充满了回忆啊。
假设桃子总数为A。
                剩余桃子数
第1天        B=A-(A/2+1)
第2天        C=B-(B/2+1)
....                ....
....                ....
....                ....
第10天        1

--> 显然要从第10天开始倒退。  
        每天剩余的桃子数Y满足 Y=X-(X/2+1)  (X为前一天的桃子数)
        ==> 所以 X=2(Y+1)
*/
class HouZiChiTao {
        public static void main(String[] args) {
                int y=1;
                int x=0;
                for (int i=9; i>=1; i--){ //从第9天开始倒推
                        x=2*(y+1);
                        y=x;
                }
                System.out.println("第一天共摘了"+x+"个桃子!");
        }
}
/*
        输出结果
        第一天共摘了1534个桃子!
*/

/*------------------------------------------------*/
//这个例子是个典型的递归调用的例子,下面使用递归实现

class HouZiChiTao2{
       
        public static void main(String[] args){
                System.out.println(total(1));
        }
        //定义total方法,表示第day天桃子的总数
        public static int total(int day){
                if (day == 10){ //递归终止条件
                        return 1;
                }else{
                        return (total(day+1)+1)*2;
                }
        }
}

10 个回复

倒序浏览
加油  沙发
回复 使用道具 举报
点个赞,6666666666666
回复 使用道具 举报
小马哥来首黄家驹~~~~
回复 使用道具 举报
不懂。高大上的感觉
回复 使用道具 举报
点赞1111111111!
回复 使用道具 举报
以前也看见过这道题
回复 使用道具 举报
看不懂怎么办啊??哭!
回复 使用道具 举报
我也喜欢这样的题目  
回复 使用道具 举报
猴子就爱吃桃
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马