算法導論·第七集:斐波那契數列(Python版)

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章