复习斐波那契数列

前言

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

斐波那契数列(Fibonacci sequence)的定义

斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........,这个数列从第3项开始,每一项都等于前两项之和。

直接上代码:

 /**
     * 使用循环直接赋值
     *
     * @param sum
     */
    public void getFib1(int sum) {

        int a = 1;
        int b = 1;
        int c = 0;

        //从索引3开始计算
        for (int i = 3; i <= sum; i++) {
            //第三个数即为c,a+b等于c的值
            c = a + b;
            //重新赋值
            a = b;
            b = c;
        }
        LogUtils.i("sum = " + c);
    }


    /**
     * 使用数组
     *
     * @param sum
     */
    public void getFib2(int sum) {

        int[] arr = new int[sum];
        arr[0] = 1;
        arr[1] = 1;
        for (int i = 0; i < arr.length; i++) {
            if (i > 1) {
                arr[i] = arr[i - 2] + arr[i - 1];
            }
        }

        LogUtils.i("sum = " + arr[sum-1]);

    }


    /**
     * 使用递归
     *
     * @param sum
     */
    public int getFib3(int sum) {

        if (sum == 1 || sum == 2) {
            return 1;
        } else {
            return getFib3(sum - 2) + getFib3(sum - 1);
        }
    }

你可能感兴趣的:(复习斐波那契数列)