古典问题 兔子下崽

古典问题:有一对兔子,从出生后第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<mounth-3;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()函数

                }

}
}

    
              
    
              

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值