古典问题:有一些不会死的兔子!

问题描述:

有一对兔子,从出生三个月之后,每个月都生一对兔子,小兔子长到第三个月,又出生一对,假如兔子都不死。
       问在几月有多少个兔子。

在考虑这个问题的时候,最开始想到的就是递归

但是话又说回来,这种 真~小学数学,应该可以有其他的办法。这个方法还是我在第二天有了点想法,分享给大家。

最开只有一对兔子

月份  兔子的对数

1         1对

2         1对

3         2对

4         3对

5         5对

6         8对

7         13对

8         21对

这个样子写出来,应该比较清晰一点,大家可以看到  这里是有规律的:从三月开始,每个月兔子的数量是前两个月的数量和!

当然这个规律也是比较显而易见的,但是我们可以考虑用一些比较简单的方法

如下:

我们可以定义一个数组,众所周知,数组是有下标元素的,正好! 兔子和月份也是两个

已知这个规律,用上数组,剩下的就交给循环做去吧

public void demo03(){

        Scanner input = new Scanner (System.in);
        System.out.println("请输入你要查询的月数");
        int  n = input.nextInt();  //让用户动态输入要查询的月数

        int[]arr=new int[n];//  数组的长度就   是这个月数  数组来了

        arr[0]=1;  //一月和二月我们都是知道的
        arr[1]=1; //

        //循环来了

        for (int i = 2; i < arr.length; i++) {
                   arr[i]= arr[i-1]+arr[i-2];  //这个就是上面说的规律 
               }

        System.out.println("第"+n+"个月有"+(arr[n-1]*2)+"只兔子");

}

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值