Algorithm 迭代斐波那契复杂性,无法理解为什么它是O(n^2)
请不要把这个问题与递归斐波那契混淆,它的复杂性为2^n 这是我使用的斐波那契迭代代码:Algorithm 迭代斐波那契复杂性,无法理解为什么它是O(n^2),algorithm,time-complexity,fibonacci,Algorithm,Time Complexity,Fibonacci,请不要把这个问题与递归斐波那契混淆,它的复杂性为2^n 这是我使用的斐波那契迭代代码: def f(n): a, b = 0, 1 for i in range(0, n): a, b = b, a + b return a 我试着找出复杂性,得到了T(n)=n*4+4=4n+4,但我得到的图根本不是线性的,更像是n^2。例如: print(timerf(250000)/timerf(50000)) 这给了我25左右的结果 我画了一幅图: 这表明斐
def f(n):
a, b = 0, 1
for i in range(0, n):
a, b = b, a + b
return a
我试着找出复杂性,得到了T(n)=n*4+4=4n+4,但我得到的图根本不是线性的,更像是n^2。例如:
print(timerf(250000)/timerf(50000))
这给了我25左右的结果
我画了一幅图:
这表明斐波那契迭代法的复杂度应为n^2。如何解释 原因可能是整数的加法不需要固定的时间,而是线性的-O(位数)迭代方法的复杂性是
O(n)*加法的成本
通常人们假设加法的成本是一个常数,但对于斐波那契数,我们很快就超越了这个假设
由于
F(n)
呈指数增长,因此其中的位数是O(n)
。由此产生的复杂性是O(n^2)好吧,现在我明白了,一个新问题出现了,加法的代价,它有某种n的指数函数,对吗?因为斐波那契数会很快变大,但是加法的代价取决于斐波那契数,而不是n,你如何实现加法的代价?我的意思是,你是说斐波那契数的上界(如果存在的话)总是小于这个函数,这就是复杂度吗?编辑,当然是n的幂的黄金比例,这是斐波那契函数的上界。