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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© maxwell247 中级黑马   /  2015-9-26 18:24  /  940 人查看  /  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!
回复 使用道具 举报
以前也看见过这道题
回复 使用道具 举报
看不懂怎么办啊??哭!
回复 使用道具 举报
我也喜欢这样的题目  
回复 使用道具 举报
猴子就爱吃桃
回复 使用道具 举报
楼主高手啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马