如何估计第n个元素的斐波那契递归算法的时间?

奥卢夫森

如何估计第N个斐波那契元素后续算法的完成时间?

private static double fib(double nth){

        if (nth <= 2) return 1;
        else return fib(nth - 1) + fib(nth - 2);
    }
萨沙·索奇卡

算法确切时间复杂度是...O(F(n))其中F(N)是第n个斐波那契数。为什么?请参阅下面的说明。

让我们通过归纳证明它。显然,它适用于基本情况(一切都是常数)。为什么对F(N)成立呢?让我们将算法复杂度函数表示为T(N)。然后T(N) = T(N-2) + T(N-1),由于您进行了2次递归调用-一个递减参数,一个递减参数1,一个递减参数2。并且此时间复杂度恰好是Fibonacci序列。

因此F(N),您可以做出的最佳估计是,但您也可以说这是O(2^n)或更确切的O(phi^n)位置phi = (1 + sqrt(5)) / 2 ~= 1.61为什么?因为第n个斐波那契数几乎等于phi ^ n

此界限使您的算法成为非多项式算法,并且对于大于周围的数字而言,运算速度非常慢30您应该考虑其他好的算法-有许多针对此问题的对数算法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用递归程序的 NASM 中的第 n 个斐波那契数 - [组装]

来自分类Dev

斐波那契算法

来自分类Dev

斐波那契递归?

来自分类Dev

没有递归线性的斐波那契算法?

来自分类Dev

带有变体的递归斐波那契算法

来自分类Dev

没有递归线性的斐波那契算法吗?

来自分类Dev

在O(logn)时间和空间复杂度中找到第N个斐波那契数?

来自分类Dev

如何使用复杂度为 O(n) 的 Javascript 找到第 n 个斐波那契数

来自分类Dev

打印斐波那契数列直到第n位?

来自分类Dev

n的第N个斐波那契数等于10 ^ 19?

来自分类Dev

查找斐波那契n mod m的更快算法

来自分类Dev

如何计算这种斐波那契算法的效率?

来自分类Dev

如何创建鲁棒的斐波那契算法?

来自分类Dev

使用斐波那契递归打印1到n

来自分类Dev

使用动态规划获得第n个斐波那契数

来自分类Dev

使用C中的黄金比率计算第n个斐波那契数模m

来自分类Dev

找到斐波那契的第n个术语我一直出错

来自分类Dev

使用2D数组的第N个斐波那契数

来自分类Dev

使用动态规划获得第n个斐波那契数

来自分类Dev

获取 G 系列的第 n 个值(一般斐波那契数列)

来自分类Dev

如何递归生成斐波那契数列的数组?

来自分类Dev

如何使用递归获取斐波那契数列?

来自分类Dev

如何在JAVA中达到第92个斐波那契数字?

来自分类Dev

NASM大会递归斐波那契

来自分类Dev

递归斐波那契代码

来自分类Dev

斐波那契数列的跟踪递归

来自分类Dev

尾递归斐波那契

来自分类Dev

使用递归的JavaScript斐波那契

来自分类Dev

NASM大会递归斐波那契