美文网首页
Java之不死神兔

Java之不死神兔

作者: 无量儿 | 来源:发表于2018-09-11 17:31 被阅读0次

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

    问题分析:

    题目乍一看并不知道在说什么,不要紧,我们来找规律。

    第几个月 兔子对数 为什么
    1 1 原来有一对兔子,编号a
    2 1 原来有一对兔子,编号a
    3 2 第3个月生了一对小兔子,编号b
    4 3 原来老兔子a继续生小兔子,编号c
    5 5 编号b的兔子成熟,和老兔子一起生小兔子,编号d、e
    6 8 a、b、c一起生兔子,编号f、g、h
    7 13 a、b、c、d、e一起生兔子,编号i、j、k、l、m
    ... ... ...

    从表中可以看出,从第三个月开始,当前月兔子对数是前两个月兔子对数的和,所以求当前月兔子对数的核心代码是arr[i] = arr[i - 2] + arr[i - 1];
    该题目原型就是著名的斐波那契数列,下面贴出代码并科普斐波那契数列。

    完整代码如下 :
    public static void main(String[] args) {
        int[] arr = new int[20];
        arr[0] = 1; // 第一个月兔子的数量,1对
        arr[1] = 1; // 第二个月兔子的数量,1对
        int sum = 2; // 用于记录兔子总数量,现在初始化为前两个月兔子的总数,2对
        for (int i = 2; i < arr.length; i++) {
            arr[i] = arr[i - 2] + arr[i - 1];
            System.out.println("第" + (i + 1) + "个月兔子对数为:" + arr[i]);
            sum += arr[i];
        }
        System.out.println("兔子总对数:" + sum);
    }
    
    斐波那契数列小科普

    “斐波那契数列”和分数的发明者,是意大利数学家列昂纳多·斐波那契。1202年,他撰写了《珠算原理》(Liber Abaci)一书。他是第一个研究了印度和阿拉伯数学理论的欧洲人。他的父亲被比萨的一家商业团体聘任为外交领事,派驻地点相当于今日的阿尔及利亚地区,列昂纳多因此得以在一个阿拉伯老师的指导下研究数学。

    列昂纳多·斐波那契.jpg

    斐波那契数列(Fibonacci sequence):又称黄金分割数列,因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)

    PS:如有不足或错误,请多多包含并指正。

    相关文章

      网友评论

          本文标题:Java之不死神兔

          本文链接:https://www.haomeiwen.com/subject/ilregftx.html