黑马程序员技术交流社区

标题: 请问这个题目有什么简便方法 [打印本页]

作者: 默默地回忆    时间: 2015-1-17 22:32
标题: 请问这个题目有什么简便方法
本帖最后由 默默地回忆 于 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;
        }


作者: (_演绎、青春    时间: 2015-1-17 22:42
看看这个帖子吧
解答兔子问题
http://bbs.itheima.com/thread-163215-1-1.html
(出处: 黑马程序员IT技术论坛)

作者: 默默地回忆    时间: 2015-1-17 22:53
谢谢,用递归方法确实简单很多,就是还么有学到递归呢,这个方法要是自己想真的很难想到
作者: 希冀    时间: 2015-1-18 00:56
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);
       }
}
作者: 福城小宝    时间: 2015-1-18 01:16
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);
             }
       }
}
作者: xiao飞    时间: 2015-1-18 09:12
递归是简单,但是不能算太大的数,因为要避免内存溢出




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