不死神兔问题(斐波那契数列)

回眸只為那壹抹淺笑 提交于 2020-03-09 09:46:04

题目

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

分析

由此可见兔子对象的数据是:1 , 1 , 2 , 3 , 5 , 8 …
前两个月兔子都是一对,从第三个月开始每个月的兔子是前两个月兔子的和

程序代码

非递归实现

package com.company.demo;

public class MyDemo {
    public static void main(String[] args) {
        int[] arr = new int[20];
        //前两个月都是1对
        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(arr[19]);
    }
}

递归实现

package com.company.demo;

public class MyDemo {
    public static void main(String[] args) {
        int num = rabbitSum(20);
        System.out.println(num);
    }

    private static int rabbitSum(int i) {
        //找出口
        if (i == 1 || i == 2) {
            return 1;
        } else {
            return rabbitSum(i - 1) + rabbitSum(i - 2);
        }
    }
}

运行结果

递归和非递归运行结果都一样
结果

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!