求斐波那契数列的第 n 项

写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。


斐波那契数列的定义如下:
F(0) = 0, F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。

public class Test10{
    public static int fib1(int n) {
        //方法一,递归花费时间较多
        if (n <= 1) {
            return n;
        }
        return fib1(n - 1) + fib1(n - 2);
    }
    public static int fib2(int n) {
        //方法二,使用循环代替递归
        if (n <= 2) return n;
        //定义数组来存贮数列每一项的值
        int[] arr = new int[n + 1];
        arr[1] = 1;
        for (int i = 2; i <= n; i++)
            arr[i] = (arr[i - 1] + arr[i - 2]) % 1000000007;//防止数值过大越界
        return arr[n];
    }
    public static int fib3(int n) {
        //方法三,减小空间复杂度
            if (n<=1){
                return n;
            }
            int a, b, sum;
            a = 1;
            b = 0;
            for(int i = 0; i < n; i++){
                sum = (a + b) % 1000000007;
                b = a;
                a = sum;
            }
            return b;
        }
    public static void main(String[] args) {
        System.out.println(fib1(5));
        System.out.println(fib2(5));
        System.out.println(fib3(5));
    }
}

结果:
在这里插入图片描述

发布了7 篇原创文章 · 获赞 0 · 访问量 131

猜你喜欢

转载自blog.csdn.net/success360/article/details/105342982