"""
斐波那契數列
解法:
Fibonacci是1200年代的歐洲數學家。
例如:1、1、2、3、5、8、13、21、34、……
F(n) = F(n-1)+F(n-2) if n>1
F(n) = 1 if n = 0 or 1
"""
#迭代算法
def fibonacci_iter(n):
if n > 0:
fib = [1,1]
for i in range(2,n):
fib.append(fib[i-1]+fib[i-2])
print(fib)
else:
print("Cannot be calculated correctly.")
#遞歸·非優化算法
def fibonacci_recu(n):
if n == 1 or n == 2:
return 1
elif n > 2:
return fibonacci_recu(n-1)+fibonacci_recu(n-2)
#遞歸·優化算法
def fibonacci_recu_opt(n,a = 1,b = 1):
if n > 2:
return fibonacci_recu_opt(n-1,a+b,a)
return a
if __name__ == "__main__":
fibonacci_iter(10)
val1 = fibonacci_recu(10)
print(val1)
val2 = fibonacci_recu_opt(10)
print(val2)
"""
運行結果:
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
55
55
"""