通过时间复杂度来衡量斐波那契算法优异度

2021-07-19  本文已影响0人  李永开

下面有两种斐波那契算法,


 /* 0 1 1 2 3 5 8 13 21 34*/
 /* 0 1 2 3 4 5 6 7  8  9*/

    //递归,输入70的时候程序就卡了
    //时间复杂度:O(2^n)
    public static int fib1(int n) {
        if (n <= 1) return n;
        return fib1(n - 1) + fib1(n -2);
    }

    //输入70,不卡
    //时间复杂度:O(n)
    public static int fib2(int n) {
        if (n <= 1) return n;

        int x = 0;
        int y = 1;
        int sum = 0;
        for (int i = 0; i <= n - 2; i ++) {
            sum = x + y;
            x = y;
            y = sum;
        }
        return sum;
    }



    //精简下,使用两个变量
    //时间复杂度:O(n)
    public static int fib2(int n) {
        if (n <= 1) return n;

        int x = 0;
        int y = 1;
        for (int i = 0; i <= n - 2; i ++) {
            y = x + y;
            x = y - x;
        }
        return y;
    }
上一篇 下一篇

猜你喜欢

热点阅读