python使用遞歸實現(xiàn)斐波那契數(shù)列的示例詳解
斐波那契數(shù)列(Fibonacci sequence),又稱黃金分割數(shù)列、因數(shù)學(xué)家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數(shù)列”,指的是這樣一個數(shù)列:1、1、2、3、5、8、13、21、34、……在數(shù)學(xué)上,斐波納契數(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))
打印結(jié)果:
請傳入大于0的數(shù)值!
0
1
2
55
如果實現(xiàn)打印出的值為:1,1,2,3,5,8,13,21,34,……該如何實現(xiàn)呢?
#默認(rèn)值帶出小于或等于2的值 resList = [0,1,1] def flag(n): #遞歸到最后,因為flag(n-1) + flag(n-2)同時執(zhí)行,n的值為1或2,直接return結(jié)果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集合有默認(rèn)值,所以對于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í)行結(jié)果
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
對于后面這個實現(xiàn),只是我個人的思路,應(yīng)該有更簡單的做法,歡迎大家分享。
以上就是python使用遞歸實現(xiàn)斐波那契數(shù)列的示例詳解的詳細(xì)內(nèi)容,更多關(guān)于python遞歸實現(xiàn)斐波那契數(shù)列的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
簡單了解Python3 bytes和str類型的區(qū)別和聯(lián)系
這篇文章主要介紹了簡單了解Python3 bytes和str類型的區(qū)別和聯(lián)系,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-12-12python關(guān)于圖片和base64互轉(zhuǎn)的三種方式
無論使用cv2、PIL還是直接讀取圖片的方法進(jìn)行圖片與Base64的轉(zhuǎn)換,核心步驟都涉及到二進(jìn)制格式的轉(zhuǎn)換,每種方法的基本過程都是:Base64轉(zhuǎn)二進(jìn)制,然后二進(jìn)制轉(zhuǎn)圖片,或反向操作,這些方法均基于二進(jìn)制與圖片轉(zhuǎn)換的基本原理2024-09-09windows、linux下打包Python3程序詳細(xì)方法
這篇文章主要介紹了windows、linux下打包Python3程序詳細(xì)方法,需要的朋友可以參考下2020-03-03python GUI庫圖形界面開發(fā)之PyQt5切換按鈕控件QPushButton詳細(xì)使用方法與實例
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5切換按鈕控件QPushButton詳細(xì)使用方法與實例,需要的朋友可以參考下2020-02-02Python實現(xiàn)Web應(yīng)用國際化i18n的示例詳解
這篇文章主要為大家詳細(xì)介紹了如何基于Python的gettext模塊,實現(xiàn)一個靈活、可擴(kuò)展的多語言支持系統(tǒng),文中的示例代碼講解詳細(xì),有需要的可以參考下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-10Pandas時間類型轉(zhuǎn)換與處理的實現(xiàn)示例
本文主要介紹了Pandas時間類型轉(zhuǎn)換與處理的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07