這是蟒蛇計算斐波那契數列的迭代版本:分析複雜的代碼(斐波納契數列)
def fib_iterative(n):
if n == 0:
return []
if n == 1:
return [1]
if n == 2:
return [1,1]
fib_list = [1,1]
for i in range(0,n):
fib_list.append(fib_list[i]+fib_list[i+1])
return fib_list
這是遞歸版本:
def fib_recursive(n):
if n == 1:
return 1
elif n == 2:
return 1
else:
return fib_recursive(n-1) + fib_recursive(n-2)
def fib_numbers_in_list(n):
fibn = []
for x in range(1,n+1):
fibn.append(fib_recursive(x))
return fibn
什麼是大-O每?
調用函數是fib_numbers_in_list(n)和fib_iterative(n)返回列表中的前n個斐波那契數。
有沒有一種方法可以找到O(log n)算法來生成n個斐波納契數?
你應該自己解決這個問題。 SO不是解決別人的任務。 –
在第二個例子中我看不到任何遞歸,它看起來有點*困惑*。 。 。 –
這是我寫的代碼。我只是有點困惑,當我運行n = 50的第二個版本時,python解釋器暫停。 而第一個版本:它提供了輸出儘快。 只想在Big-O上留下一些想法 @NeilSlater在第二個版本中,使用遞歸計算第n個斐波那契數,然後第二個函數按順序將它們追加到列表中。 –