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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙百鑫   /  2013-6-15 16:11  /  13898 人查看  /  241 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class Test8 {

  2.         public static void main(String[] args) {
  3.                 int sum=1;//第十天的数量
  4.                 for(int i=9;i>=1;i--)
  5.                 {
  6.                         sum=(sum+1)*2;//上一天的数量是今天的数量加1乘以2循环九次即为第一天的数量
  7.                 }
  8.                 System.out.println("总共桃子数为:"+sum);               
  9.         }
  10. }
复制代码
答案为:
总共桃子数为:1534

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1 怎么不用递归的.分会更多的

查看全部评分

回复 使用道具 举报
  1. public class Monkey {
  2.         public static int total(int day){
  3.                 if(day == 10){   //当第十天的时候剩一个桃子
  4.                         return 1;
  5.                         }
  6.                 else{
  7.                           return (total(day+1)+1)*2;//每天剩余的桃数是第二天桃数加1的两倍
  8.                         }
  9.                 }
  10.         public static void main(String[] args)
  11.         {
  12.                 System.out.println(total(1));
  13.         }
  14.        

  15. }
复制代码

QQ截图20130615164826.png (10.35 KB, 下载次数: 0)

QQ截图20130615164826.png

评分

参与人数 1技术分 +3 收起 理由
夜默 + 3 回来再完善一下注释...

查看全部评分

回复 使用道具 举报
  1. public class Houzi {
  2. public static void main(String[] args) {
  3.   //定义最后一天的桃子数量sum=1
  4.   int sum=1;
  5.   //采用循环,利用递归求解
  6.   for(int day=10;day>=1;day--){
  7.    System.out.println("第"+day+"天的桃子总数:"+sum);
  8.    sum=get(sum);   
  9.   }
  10. }
  11. //递归求解桃子总数
  12. public static int get(int sum){
  13.   return (sum+1)*2;
  14. }
  15. }
复制代码

QQ截图20130615165320.png (5.27 KB, 下载次数: 0)

QQ截图20130615165320.png

评分

参与人数 1技术分 +2 收起 理由
夜默 + 2 用到递归,但时间超了4分钟...

查看全部评分

回复 使用道具 举报
刚睡醒就来了
回复 使用道具 举报
可以答题了^-^
回复 使用道具 举报
好激动啊,先看看。。
回复 使用道具 举报
look,look.......
回复 使用道具 举报
public class test1 {
        public static void main(String[] args)
        {
                int sum=1;
                for(int i=1;i<10;i++)//一共10天,控制循环次数
                {
                        sum=(sum+1)*2;//实现前一天的一半加一个
                }
                System.out.println("一共有"+sum+"桃子");//打印一共有多少桃子
        }

}

评分

参与人数 1技术分 +2 收起 理由
夜默 + 2

查看全部评分

回复 使用道具 举报

编辑不了自己的是怎么回事啊?

点评

正在反应这个问题..  发表于 2013-6-15 17:56
回复 使用道具 举报
打印结果:
一共有1534桃子
回复 使用道具 举报
瞎了,忘记使用递归了。。。哎。这么简单。
回复 使用道具 举报
  1. /*
  2. 题目:猜一猜猴子摘了多少桃子呢?
  3. 猴子吃桃的问题:猴子第一天摘下来N个桃子,当天就吃了一半,但是还不过瘾,又多吃了一个,第二天早上又将
  4. 剩下的桃子吃了一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个,到第十天早上的时候就发现剩下
  5. 一个桃子了.求第一天一共摘下了多少桃子呢?

  6. 思路:1、此题是一个数学推理题,可以采用逆向思维进行推理,先定义一个方法用表达式表示出第九天的结果;
  7.           2、利用递归原理调用计算方法,这样即可得到计算结果。

  8. 步骤:1、定义一个类,把主函数和计算方法定义在这个类中即可。
  9.           2、定义计算方法及利用递归原理进行调用计算出结果。
  10.           3、定义主函数,调用方法即可得到计算结果。
  11. */
  12. class Demo
  13. {
  14.         public static void jiSuan(int i,int j)//定义计算方法
  15.         {
  16.                 int sum=j;
  17.                 sum=sum*2+1;
  18.                 System.out.println("第"+i+"天有"+sum+"个桃子");
  19.                 i--;
  20.                 if(i>0)
  21.                         jiSuan(i,sum);//递归调用
  22.         }
  23.                
  24.         public static void main(String[] args)
  25.         {
  26.                 jiSuan(10,0);//调用计算方法
  27.         }
  28. }
复制代码
计算结果

QQ截图20130615171445.jpg (22.07 KB, 下载次数: 0)

QQ截图20130615171445.jpg

评分

参与人数 1技术分 +3 收起 理由
夜默 + 3 超时答题本该给2分,但很详细,活动结束后.

查看全部评分

回复 使用道具 举报
先看看再说
回复 使用道具 举报
public static void main(String[] args)
{
        int x = 1;
        for(int i =2;i<=10;i++)
        {
                x=(x+1)*2;
        }
        System.out.println(x);
}

评分

参与人数 1技术分 +1 收起 理由
夜默 + 1 养成写注释的好习惯...

查看全部评分

回复 使用道具 举报
我来试试
回复 使用道具 举报
Heart 中级黑马 2013-6-15 17:24:13
36#
又有福利喽
回复 使用道具 举报
结果忘给了,不好意思哈。1534
回复 使用道具 举报
张俊迪 发表于 2013-6-15 16:47
答案为:
总共桃子数为:1534

刚才仔细看题意现在用递归写一个你看看吧,不知还有分不
  1. public class Test8 {
  2.         static int day=10;
  3.         static int sum=1;//第十天的数量
  4.         public static void main(String[] args) {
  5.                 sum=run(sum);
  6.                 System.out.println(sum);
  7.         }
  8.         public static  int  run(int sum){
  9.                 sum=(sum+1)*2;
  10.                 day--;
  11.                 if(day==1)
  12.                 {
  13.                         return sum;
  14.                 }
  15.                 else{
  16.                         sum=run(sum);
  17.                         return sum;
  18.                 }
  19.         }
  20. }
复制代码
不写注释了,都一个原理

评分

参与人数 1技术分 +1 收起 理由
夜默 + 1 能反复思考问题,值得鼓励,必须有分,不要.

查看全部评分

回复 使用道具 举报
这个题出得不严谨啊,如果总数出现时奇数的时候,这个题就不是那么简单的了,还得推算几分之几,这就有点麻烦了,这个奇数的一半就出现小数了.........{:soso_e127:}
回复 使用道具 举报
  1. public class MonkeyPeach
  2. {               
  3.         public int day = 1;                        //天数;
  4.         public int peach = 1;                //桃子的数量;
  5.        
  6.         public void add()                        //通过逆向递归调用来获取第一天摘取桃子的总数;
  7.         {       
  8.                 if(day <= 9)
  9.                 {
  10.                         peach = (peach+1)*2;        //因为每天都先吃了一半,然后又吃了一个,逆向来说就是先加上一个,然后再乘以2;
  11.                         day+=1;
  12.                         add();       
  13.                 }
  14.                
  15.         }
  16.        
  17.         public void show()                        //打印桃子的实际数量;
  18.         {
  19.                 System.out.println("第一天,猴子总共摘了"+peach+"个桃子!");       
  20.         }
  21.        
  22.         public static void main(String [] args)
  23.         {
  24.                         MonkeyPeach mp = new MonkeyPeach();
  25.                         mp.add();
  26.                         mp.show();
  27.         }
  28. }
复制代码
做出来了,第一天小猴总共摘了1534个桃子!

评分

参与人数 1技术分 +3 收起 理由
夜默 + 3 封装方法,递归调用,虽然超时,但是这良好.

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马