答案 0 :(得分:5)
公式:
使用exponentiation by squaring,您将获得O(log(n))
次乘法以查找第n个斐波纳契数。但在这种情况下乘法并不是一个简单的操作,实际时间复杂度为O(M(n)*log(n))
,其中M(n)
是两个数字乘以长度O(n)
的复杂性。
计算Fibonacci数的算法中有benchmark个算法,包括矩阵逼近和天真乘法以及Karatsuba乘法。
答案 1 :(得分:0)
还有一个直接公式 - 斐波那契数列是线性递归关系,并且第n个元素有一个已知的精确公式。公式是:
其中phi是golden ratio,而psi是它的反转。
与矩阵方法一样,这可以在O(log(n))
次乘法中计算。
phi是浮点数的缺点,因此你可能会因为大数字的舍入而出错。
P.S。我碰巧写了a blog post on the problem。您还可以查看wikipedia has to say about it。