1. 程式人生 > >用Python實現斐波那契數列

用Python實現斐波那契數列

斐波那契數列介紹

斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……在數學上,斐波納契數列以如下被以遞迴的方法定義:F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)在現代物理、準晶體結構、化學等領域,斐波納契數列都有直接的應用,為此,美國數學會從1963年起出版了以《斐波納契數列季刊》為名的一份數學雜誌,用於專門刊載這方面的研究成果

兔子繁殖問題

根劇高德納(Donald Ervin Knuth)的《計算機程式設計藝術》(The Art of Computer Programming),1150 年印度數學家 Gopala 和金月在研究箱子包裝物件長寬剛好為 1 和 2 的可行方法數目時,首先描述這個數列。 在西方,最先研究這個數列列的人是比薩的李奧納多(義大利人斐波那契 Leonardo Fibonacci),他描述兔子生長的數目時用上了這數列。
第一個月初有一對剛誕生的兔子;第二個月之後(第三個月初)他們可以生育,每月每對可生育的兔子會誕生下一對新兔子;兔子永不死去
假設計 n 月有可生育的兔子總共 a 對,n+1 月就總共有 b 對。在 n+2 月必定總共有 a+b 對: 因為在 n+2 月的時候,前一月(n+1 月)的 b 對兔子可以存留至第 n+2 月(在當月屬於新誕生的兔子尚不能生育)。而新生育出的兔子對數等於所有在 n 月就已存在的 a 對

上面故事就是斐波那契數列的起源。斐波那契數列用數學方式表示就是:

a0 = 0                (n=0)
a1 = 1                (n=1)
a[n] = a[n-1] + a[n-2]  (n>=2)

下面是程式碼實現

#!/usr/bin/env Python
#coding=utf-8
a,b = 0,1
lst = [0,1]
for i in range(10):
        a,b = b,a+b #關鍵在這句
        lst.append(b)
print a
print lst

解析:a,b = b,a+b
計算機在賦值時 ,等號 右邊會先進行計算,然後把 計算後的值覆蓋原有的值
這種寫法是Python獨有的。
這種寫法還可以實現變數交換,像這樣:a,b = b,a

相關推薦

Python每日一題:第4題:Python實現數列

這是Python之禪和他朋友們在知識星球的第4題:用Python實現斐波那契數列 斐波那契數列(Fibonacci)最早由印度數學家Gopala提出,而第一個真正研究斐波那契數列的是義大利數學家 Leonardo Fibonacci,斐波那契數列的定義很簡單,用數學函式可表示為: 數列從0

Python實現數列

斐波那契數列介紹 斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故

python實現數列 遞迴實現求第N個菲數列

斐波那契數列即著名的兔子數列:1、1、2、3、5、8、13、21、34、…… 數列特點:該數列從第三項開始,每個數的值為其前兩個數之和,用python實現起來很簡單: a=0 b=1 while b < 1000: print(b) a, b = b, a+b

python實現數列 遞迴實現求第N個菲數列

斐波那契數列即著名的兔子數列:1、1、2、3、5、8、13、21、34、…… 數列特點:該數列從第三項開始,每個數的值為其前兩個數之和,用python實現起來很簡單: a=0 b=1 while b < 1000: print(b) a, b = b

python實現數列筆記

log 得到 while span style mage lis nbsp images 斐波那契數列即著名的兔子數列:1、1、2、3、5、8、13、21、34、…… 數列特點:該數列從第三項開始,每個數的值為其前兩個數之和,用python實現起來很簡單: a=0 b=1

python實現數列

定義函數 實現 python實現 code while 斐波那契數列 數列 int a+b 斐波那契數列 1, 1, 2, 3, 5, 8, 13, 21, 34, ... 除第一項和第二項外,任意一項的值為前面兩項的和 定義函數 def fib(N): n,a,b

Python實現數列與跳臺階變體

本篇記錄了斐波那契數列的Python實現:遞迴與迴圈兩種解法,以及一些化用的題目。 Python實現 遞迴 按傳統的遞迴方式,簡潔、優雅。寫出來卻是O(n2)O(n^2)O(n2)的演算法 def fibo(n): """肥波那契函式""" if n

遞迴python求解數列第n項

      波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的

Python編寫數列(Fibonacci Sequence)

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

Python實現數列

問題描述 著名的斐波拉契數列(Fibonacci),除第一個和第二個數外,任意一個數都可由前兩個數相加得到: 1, 1, 2, 3, 5, 8, 13, 21, 34, … 程式碼實現

C++14嚐鮮,趣味程式設計:lambda實現數列

斐波那契數列 #include <iostream> #include <utility> using namespace std; int main() { auto f

python實現數列:迭代和遞迴對比

迭代和遞迴 從概念上講,遞迴就是指程式呼叫自身的程式設計思想,即一個函式呼叫本身;迭代是利用已知的變數值,根據遞推公式不斷演進得到變數新值得程式設計思想。 對於剛入門的程式設計小白而言,對遞迴的理解應該是要難於對迭代的理解的。下面將以python實現斐波那契

python實現 數列計算

描述 斐波那契數列如下: F(0) = 0, F(1) = 1 F(n) = F(n-1) + F(n-2) 編寫一個計算斐波那契數列的函式,採用遞迴方式,輸出不超過n的所有斐波那契數列元素 呼叫上述函式,完成如下功能: 使用者輸入一個整數n,輸出所有不超過n的斐

Python 遞歸實現數列

斐波那契數列Python 遞歸實現斐波那契數列def fab(n): if n==1 or n==2: return 1 else: return fab(n-1)+fab(n-2)num=int(input(‘請輸入數字:‘))result=fab(num)print

python代碼實現數列數列

nbsp cci con 數學家 color span 分割 兔子 簡單 斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,

python學習(十七)——補充內建函式、使用迭代器協議實現數列、描述符、pycharm的問題

一、補充內建函式 #--------------------------isinstance/isinbclass-------------- class Foo: pass class Bar(Foo): pass b1=Bar() print(isinstance(b1,

遞迴和非遞迴實現數列

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

Python中幾種常見方法實現數列

Python常見斐波那契解決方案 n=35 #1.遞迴求斐波那契 def fibo(n): return 1 if n<3 else fibo(n-1)+fibo(n-2) print(fibo(n)) #2.迴圈求斐波那契 f1,f2=0,1 for i

Python學習--數列--迭代法和遞迴法實現

斐波那契數列實現的兩種方式 迭代法: 使用迭代法速度快,運算幾乎不用等待,例如計算99代,可以瞬間出答案,效率比遞迴法快,但是程式冗雜。 def fib(n): n1 = 1 n2 = 1 n3 = 1 if n < 1:

Python生成器、實現數列

Python生成器、實現斐波那契數列 """ 生成器 按照一定規則不斷產生新元素的物件 無法直接輸出生成器裡面的內容 生成器儲存的是資料的演算法/規則,每一次呼叫產生一個 生成器建立使用yield關鍵字 函式可以有返回值,返回值返回給呼叫者