古典问题 兔子下崽

古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?

我第一次写的代码是

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        int sum =2;
        int mounth;
        Scanner in = new Scanner(System.in);
        mounth=in.nextInt();
        if(mounth>3) {
        
              for(int i=0;i                   sum=sum*2;
             System.out.println(sum);
              }
        }
        }
    }

错误原因:有三点(1)首先单位是对 不是只         写代码要看清需求不可马虎大意

                             (2)我的代码排除了月份在3以内的结果  这是不正确的  应该做到每个月都可以输出结果

                             (3)新出生的兔子需要3个月才能生育 ,并没有考虑到

答案:首先兔子的对数按月是

1月   1对

2月    1对

3月    2对(T1生了T2)

4月    3对   (T1生了t3)

5月    5对    (t1生了T4 T2生了T5)

6月    8对          (T1生了T6 t2生了t7 t3升了t8)

7月    13对       。。。。。。

兔子的规律数为 1 1 2 3 5 8 13

得出从第3个月开始 兔子的数量为前两个月的和

于是我又第二次更改代码为

   public static void main(String[] args) {
        // TODO Auto-generated method stub

        System.out.print("请输入你想知道的兔子数量的月份:");

           Scanner in=new Scanner(System.in);

           int mounth=in.nextInt();//获取输入的整数

           System.out.println("第"+mounth+"个月兔子总数为"+sum(mounth));

           scanner.close();

        }

        //求得所需月份的兔子的数量,返回值为兔子的数量

        private static int sum(int mounth){

           if(mounth==1 || mounth==2)                         

            {  return 1;

}

           else

           {   return sum(mounth-1)+sum(mounth-2);                             //此处会循环调用sum()函数

                }

}
}

    
              
    
              

你可能感兴趣的:(古典问题 兔子下崽)