什么是斐波那契數(shù)
斐波那契數(shù)赠尾,亦稱之為斐波那契數(shù)列(意大利語: Successione di Fibonacci)辐马,又稱黃金分割數(shù)列拷橘、費(fèi)波那西數(shù)列、費(fèi)波拿契數(shù)喜爷、費(fèi)氏數(shù)列冗疮,指的是這樣一個數(shù)列:1、1檩帐、2术幔、3、5湃密、8诅挑、13四敞、21、……在數(shù)學(xué)上拔妥,斐波那契數(shù)列以如下被以遞歸的方法定義:F0=0忿危,F(xiàn)1=1,F(xiàn)n=Fn-1+Fn-2(n>=2没龙,n∈N*)铺厨,用文字來說,就是斐波那契數(shù)列列由 0 和 1 開始硬纤,之后的斐波那契數(shù)列系數(shù)就由之前的兩數(shù)相加努释。
如何用python代碼寫出斐波那契數(shù)列
思考:
- 初始化前兩個數(shù)first和second為1 初始化index為0
- 從第三個數(shù)開始,大小等于前面兩個數(shù)之和
- 用循環(huán)語句打印該數(shù)列
代碼示例:
def fib(max):
first,second,index = 1,1,0
while index < max:
first,second = second,first+second
print(first)
index += 1
fib(10)
運(yùn)行結(jié)果如下:
2018-03-28_194901.jpg
擴(kuò)展:生成器(generator)
在打印列表的過程中咬摇,很多時候只用到前幾個元素伐蒂,后面很多元素根本用不到,白白占用了存儲空間肛鹏,如果生成的數(shù)據(jù)特別大逸邦,特別是列表數(shù)量上百萬、千萬在扰、甚至無窮大時缕减,那么有沒有一種辦法可以用幾個元素就計(jì)算到第幾個呢?用生成器就可以解決這個問題芒珠。
def fib(max):
first,second,index = 1,1,0
while index < max:
first,second = second,first+second
yield first
index += 1