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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 默默地回忆 中级黑马   /  2015-1-17 22:32  /  1250 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 默默地回忆 于 2015-1-17 22:55 编辑

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
我写出的方法觉得太累赘了,请各位大神指点一下
        public static int harePrintNum(int month)
        {
                //记录兔子的数量
                int sum=1;
                //记录上个月兔子的数量
                int num1=1;
                //记录上上个月兔子的数量
                int num2=1;
                if(month==1||month==2)
                        return 1;
                for(int x=3;x<=month;x++)
                {
                        num2=num1;
                        num1=sum;
                        sum=num1+num2;
                }
                return sum;
        }

5 个回复

倒序浏览
看看这个帖子吧
解答兔子问题
http://bbs.itheima.com/thread-163215-1-1.html
(出处: 黑马程序员IT技术论坛)
回复 使用道具 举报
谢谢,用递归方法确实简单很多,就是还么有学到递归呢,这个方法要是自己想真的很难想到
回复 使用道具 举报
public class Prog1{
       publicstatic void main(String[] args){
              intn = 10;
              System.out.println("第"+n+"个月兔子总数为"+fun(n));
       }
       privatestatic int fun(int n){
              if(n==1|| n==2)
                 return 1;
              else
                 return fun(n-1)+fun(n-2);
       }
}
回复 使用道具 举报
public class Text{
       publicstatic void main(String[] args){  
              System.out.println(fun(10));
       }
       private  static int fun(int n){
              if(n==1|| n==2){
                 return 1;
             } else{
                 return fun(n-1)+fun(n-2);
             }
       }
}
回复 使用道具 举报
递归是简单,但是不能算太大的数,因为要避免内存溢出
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马