Recursive
遞迴
Fibonacii 費氏數列:1, 1, 2, 3, 5, 8, 13, 21,34, 55,89, 144,......
求第n項費氏數列及所需時間?
一、遞迴費時寫法:加入花費時間
import time
def fibonacci(n):
if n==0:
return 0
elif n==1 or n==2:
return 1
else:
return fibonacci(n-1)+fibonacci(n-2)
for i in range(0,101):
t1 = time.time()
print("fibonacci", i, "=", fibonacci(i))
t2 = time.time()
print("computation time =", t2-t1)
※越後面越費時※
二、迴圈省時寫法
import time
def fibDP(n):
fib = {}
fib[1] = 1
fib[2] = 1
for i in range(3,n+1,1):
fib[i] = fib[i-1] + fib[i-2]
return fib[n]
t1 = time.time()
for i in range(1,101):
print("fibonacci "+str(i)+"="+str(fibDP(i)))
t2 = time.time()
print("computation time = "+str(t2-t1))