美文网首页
通过时间复杂度来衡量斐波那契算法优异度

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

作者: 李永开 | 来源:发表于2021-07-19 21:28 被阅读0次

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

  • 第一种简单但是时间复杂度高,2的n次方为指数爆炸,所以运算起来很慢
  • 第二种为线性复杂度,看起来多但实际运算效率很高

 /* 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;
    }

相关文章

网友评论

      本文标题:通过时间复杂度来衡量斐波那契算法优异度

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