我很困惑斐波那契函数的复杂度是2^n还是黄金比例的n次方。
“我注意到很多网站都说这个递归的复杂度是 2 的 n 次方。”
我们用这个伪代码来计算𝐹𝑛
function F(n):
if n < 2:
return n ' F(0) = 0, F(1) = 1
return F(n-1) + F(n-2)
我们将计算 𝐹𝑛 所需的初等运算(复杂度为 O(1))的数量称为 𝑇𝑛。
然后我们有常数 𝐴 和 𝐵 使得:
这里我们将加法视为常数时间运算。
我们可以看到这个序列:
由于 𝐹𝑛 = θ(φ𝑛),我们有:
𝑇𝑛 = θ(Φ𝑛+1) = θ(Φ𝑛)
对于 Big O,我们无法通过更改幂运算的 base 来获得等效表达式。 关于大 O 表示法的维基百科警告了这一点:
另一方面,不同底数的指数的阶数不同。例如,2𝑛 和 3𝑛 的阶数不同。
所以我们不能说 𝑇𝑛 = θ(2𝑛),因为 φ 不是 2,而是 1.618...