用Python實現求Fibonacci數列的第n項


1. 背景——Fabonacci數列的介紹(摘自百度百科):

  斐波那契數列(Fibonacci sequence),又稱黃金分割數列。因數學家列昂納多·斐波那契(Leonardoda Fibonacci )以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:0、1、1、2、3、5、8、13、21、34、……用公式定義如下:

計算通式為:

當n趨向於無窮大時,前一項與后一項的比值越來越逼近黃金分割0.618

 

2. 用Python迭代實現求解Fibonacci數列的第n項

def fib_iter(n):
    n1 = 1
    n2 = 1
    n3 = 1

    if (n < 1):
        print("Wrong input! ")
        return -1
    else:
        while (n-2) > 0:
            n3 = n2 + n1
            n1 = n2
            n2 = n3
            n -= 1

    return n3

result = fib_iter(35)
if result != -1:
    print(result)

優點:當n數值較大時,求解速度較遞歸法快

缺點:代碼不簡潔易懂

 

3. 用Python遞歸實現求解Fibonacci數列的第n項

def fib_re(n):
    result = 0
    if(n < 1):
        print("Wrong input! ")
        return -1
    else:
        if(n == 1 or n == 2):
            return 1
        else:
            return fib_re(n-1) + fib_re(n-2)



result = fib_re(35)
if result != -1:
    print(result)

#分治思想

優點:代碼簡潔易懂

缺點:當n數值較大時,反復的出棧和壓棧操作使得運行時間很長

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM