"""
斐波那契数列
解法:
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
"""