快速计算斐波那契数的方法

时间:2017-11-04 07:47:43

标签: algorithm performance matrix-multiplication fibonacci

如果我将使用以下方法计算斐波纳契数,它将比线性方法更快:

enter image description here

我是对的吗?

该方法来自here

2 个答案:

答案 0 :(得分:5)

公式:

enter image description here

使用exponentiation by squaring,您将获得O(log(n))次乘法以查找第n个斐波纳契数。但在这种情况下乘法并不是一个简单的操作,实际时间复杂度为O(M(n)*log(n)),其中M(n)是两个数字乘以长度O(n)的复杂性。

计算Fibonacci数的算法中有benchmark个算法,包括矩阵逼近和天真乘法以及Karatsuba乘法。

答案 1 :(得分:0)

还有一个直接公式 - 斐波那契数列是线性递归关系,并且第n个元素有一个已知的精确公式。公式是:

fibonacci formula

其中phi是golden ratio,而psi是它的反转。

与矩阵方法一样,这可以在O(log(n))次乘法中计算。 phi是浮点数的缺点,因此你可能会因为大数字的舍入而出错。

P.S。我碰巧写了a blog post on the problem。您还可以查看wikipedia has to say about it