下列為計算費波那契數列(Fibonacci numbers)的遞迴與非遞迴程式:
遞迴程式:
def fib_r(n):
if n == 0 or n == 1:
return n
else:
return fib_r(n-1) + fib_r(n-2)
非遞迴程式:
def fib_un(n):
if n == 0 or n == 1:
return n
a = 0
b = 1
for i = 2 to n:
temp = b
b = a + b
a = temp
end
return b
試計算使用遞迴及非遞迴方式求費波那契數列的時間複雜度為何?
(9 分) 試說明使用遞迴
及非遞迴方式對費波那契數列分別有何優點?(8 分)
又有何缺點?(8 分)