python使用遞歸實現(xiàn)斐波那契數(shù)列的示例詳解
斐波那契數(shù)列(Fibonacci sequence),又稱黃金分割數(shù)列、因數(shù)學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數(shù)列”,指的是這樣一個數(shù)列:1、1、2、3、5、8、13、21、34、……在數(shù)學上,斐波納契數(shù)列以如下被以遞推的方法定義:F(1)=1,F(xiàn)(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)
使用python如何求為n時的值呢?
def flag(b): if b < 0: return "請傳入大于0的數(shù)值!" if b == 0: return 0 if b == 1: return 1 if b == 2: return 1 return flag(b-1) + flag(b-2) print(flag(-1)) print(flag(0)) print(flag(2)) print(flag(3)) print(flag(10))
打印結果:
請傳入大于0的數(shù)值!
0
1
2
55
如果實現(xiàn)打印出的值為:1,1,2,3,5,8,13,21,34,……該如何實現(xiàn)呢?
#默認值帶出小于或等于2的值 resList = [0,1,1] def flag(n): #遞歸到最后,因為flag(n-1) + flag(n-2)同時執(zhí)行,n的值為1或2,直接return結果1 if n == 1 or n == 2: return 1 a = flag(n-1) + flag(n-2) #判斷如果追加的值小于集合最后一個值時,則不添加值 if(a > resList[-1]): resList.append(a) return a n = 10 #因為resList集合有默認值,所以對于n小于2時,不執(zhí)行函數(shù) flag(),直接在外部處理 if n < 0: print("n不可以小與0") elif n == 0: print("0") elif n == 1: print("0,1") else: flag(n) print(resList)
執(zhí)行結果
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
對于后面這個實現(xiàn),只是我個人的思路,應該有更簡單的做法,歡迎大家分享。
以上就是python使用遞歸實現(xiàn)斐波那契數(shù)列的示例詳解的詳細內(nèi)容,更多關于python遞歸實現(xiàn)斐波那契數(shù)列的資料請關注腳本之家其它相關文章!
相關文章
簡單了解Python3 bytes和str類型的區(qū)別和聯(lián)系
這篇文章主要介紹了簡單了解Python3 bytes和str類型的區(qū)別和聯(lián)系,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-12-12python GUI庫圖形界面開發(fā)之PyQt5切換按鈕控件QPushButton詳細使用方法與實例
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5切換按鈕控件QPushButton詳細使用方法與實例,需要的朋友可以參考下2020-02-02Python實現(xiàn)Web應用國際化i18n的示例詳解
這篇文章主要為大家詳細介紹了如何基于Python的gettext模塊,實現(xiàn)一個靈活、可擴展的多語言支持系統(tǒng),文中的示例代碼講解詳細,有需要的可以參考下2025-02-02使用PyCharm創(chuàng)建Django項目及基本配置詳解
pycharm是個很不錯的python開發(fā)工具,大大縮短了python項目的創(chuàng)建時間以及調(diào)試時間。這篇文章主要介紹了使用PyCharm創(chuàng)建Django項目及基本配置詳解,pycharm是個很不錯的python開發(fā)工具,大大縮短了python項目的創(chuàng)建時間以及調(diào)試時間2018-10-10