Algorithm 迭代斐波那契复杂性,无法理解为什么它是O(n^2)

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左右的结果 我画了一幅图: 这表明斐

请不要把这个问题与递归斐波那契混淆,它的复杂性为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左右的结果

我画了一幅图:


这表明斐波那契迭代法的复杂度应为n^2。如何解释

原因可能是整数的加法不需要固定的时间,而是线性的-O(位数)

迭代方法的复杂性是
O(n)*加法的成本

通常人们假设加法的成本是一个常数,但对于斐波那契数,我们很快就超越了这个假设


由于
F(n)
呈指数增长,因此其中的位数是
O(n)
。由此产生的复杂性是O(n^2)

好吧,现在我明白了,一个新问题出现了,加法的代价,它有某种n的指数函数,对吗?因为斐波那契数会很快变大,但是加法的代价取决于斐波那契数,而不是n,你如何实现加法的代价?我的意思是,你是说斐波那契数的上界(如果存在的话)总是小于这个函数,这就是复杂度吗?编辑,当然是n的幂的黄金比例,这是斐波那契函数的上界。