斐波那契數(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*)在現(xiàn)代物理、準晶體結構、化學等領域,斐波納契數(shù)列都有直接的應用,為此,美國數(shù)學會從 1963 年起出版了以《斐波納契數(shù)列季刊》為名的一份數(shù)學雜志,用于專門刊載這方面的研究成果。

創(chuàng)新互聯(lián)公司主營江北網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,APP應用開發(fā),江北h5小程序設計搭建,江北網(wǎng)站營銷推廣歡迎江北等地區(qū)企業(yè)咨詢
def fibonacci(n):
"""生成斐波拉數(shù)列的元素"""
a, b = 0, 1
for item in range(n + 1):
a, b = b, a + b
return a
fibonacci_list = list()
for i in range(20): ?# 將前20個保存到列表中
fibonacci_list.append(fibonacci(i))
# ls=[1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765]
for item in fibonacci_list:
if item % 5 == 0 and item % 3 == 0: ?# 被3和5整除,即余數(shù)是0
print(item, end=" ")
斐波那契數(shù)列指的是這樣一個數(shù)列 0, 1, 1, 2, 3, 5, 8, 13,特別指出:第0項是0,第1項是第一個1。從第三項開始,每一項都等于前兩項之和。
def fib(num):
fibs=[0,1]
#num=input('請輸入婓波那契數(shù)列中的數(shù)據(jù)個數(shù):')
for i in range(int(num)-2):
fibs.append(fibs[-2]+fibs[-1])
print(fibs)
print(fibs[-2])
fib(10)
在數(shù)學上
斐波那契數(shù)列以如下被以遞推的方法定義:F(0)=0,F(xiàn)(1)=1,?F(n)=F(n - 1)+F(n - 2)(n?≥ 2,n?∈ N*)在現(xiàn)代物理、準晶體結構、化學等領域,斐波納契數(shù)列都有直接的應用,為此,美國數(shù)學會從 1963 年起出版了以《斐波納契數(shù)列季刊》為名的一份數(shù)學雜志,用于專門刊載這方面的研究成果。
斐波那契數(shù)列指的是這樣一個數(shù)列 0, 1, 1, 2, 3, 5, 8, 13,特別指出:第0項是0,第1項是第一個1。從第三項開始,每一項都等于前兩項之和。
# 判斷輸入的值是否合法
if nterms = 0:
print("請輸入一個正整數(shù)。")
elif nterms == 1:
print("斐波那契數(shù)列:")
print(n1)
else:
print("斐波那契數(shù)列:")
print(n1,",",n2,end=" , ")
while count nterms:
nth = n1 + n2
print(nth,end=" , ")
# 更新值
n1 = n2
n2 = nth
count += 1
平方與前后項
從第二項開始(構成一個新數(shù)列,第一項為1,第二項為2,……),每個偶數(shù)項的平方都比前后兩項之積多1,每個奇數(shù)項的平方都比前后兩項之積少1。如:第二項 1 的平方比它的前一項 1 和它的后一項 2 的積 2 少 1,第三項 2 的平方比它的前一項 1 和它的后一項 3 的積 3 多 1。
def?Fibonacci(n):
if?n?==?1:
return?1
dic?=?[-1?for?i?in?xrange(n)]
dic[0],?dic[1]?=?1,?1
helper(n-1,?dic)
linesize?=?5
file=open('Fibonacci.txt',?'w')
for?loop?in?range(len(dic)/linesize):
line?=?[]
for?i?in?range(linesize):
line.append(dic[i?+?linesize?*?loop])
file.write("\t".join([str(x)?for?x?in?line])?+?"\n")
file.close()
def?helper(n,?dic):
if?dic[n]??0:
dic[n]?=?helper(n-1,?dic)+helper(n-2,?dic)
return?dic[n]
class?indexer:
def?__init__(self):
self.fib?=?{0:?1,?1:?1}
def?__getitem__(self,?index):
try:
return?self.fib[index]
except?KeyError:
v?=?self[index-1]?+?self[index-2]
self.fib[index]?=?v
return?v
X?=?indexer()
for?i?in?range(5):
print(X[i])
Python的解釋環(huán)境是很好用,但是如果我們需要編寫一個大型的程序的時候,解釋環(huán)境就完全不夠用了。這個時候我們需要將python程序保存在一個文件里。通常這個文件是以.py結尾的。
對于大型的應用程序來說,一個文件可能是不夠的,這個時候我們需要在文件中引用其他的文件,這樣文件就叫做模塊。
模塊是一個包含Python定義和語句的文件。文件名就是模塊名后跟文件后綴 .py 。在模塊內部,模塊名可以通過全局變量 __name__ 獲得。
還是之前的斐波拉赫數(shù)列的例子,我們在fibo.py文件中存放了函數(shù)的實現(xiàn):
編寫完畢之后,我們可以在Python的解釋環(huán)境中導入它:
然后直接使用即可:
常用的函數(shù),我們可以將其賦值給一個變量:
或者,我們在導入的時候,直接給這個模塊起個名字:
或者導入模塊中的函數(shù):
每個模塊都有它自己的私有符號表,該表用作模塊中定義的所有函數(shù)的全局符號表。因此,模塊的作者可以在模塊內使用全局變量,而不必擔心與用戶的全局變量發(fā)生意外沖突。
前面我們提到了可以使用import來導入一個模塊,并且 __name__ 中保存的是模塊的名字。
和java中的main方法一樣,如果我們想要在模塊中進行一些測試工作,有沒有類似java中main方法的寫法呢?
先看一個例子:
在模塊中,我們需要進行一個判斷 __name__ 是不是被賦值為 "__main__"。
我們這樣來執(zhí)行這個模塊:
以腳本執(zhí)行的情況下,模塊的 __name__ 屬性會被賦值為 __main__ , 這也是例子中為什么要這樣寫的原因。
看下執(zhí)行效果:
如果是以模塊導入的話,那么將不會被執(zhí)行:
使用import導入模塊的時候,解釋器首先會去找該名字的內置模塊,如果沒找到的話,解釋器會從 sys.path變量給出的目錄列表里尋找。
sys.path的初始目錄包括:
要想查看模塊中定義的內容,可以使用dir函數(shù)。
上面的例子列出了當前模塊中定義的內容,包括變量,模塊,函數(shù)等。
我們可以給dir加上參數(shù),來獲取特定模塊的內容:
java中有package的概念,用來隔離程序代碼。同樣的在Python中也有包。
我們看一個Python中包的例子:
上面我們定義了4個包,分別是sound,sound.formats, sound.effects, sound.filters。
__init__.py 可以是一個空文件,也可以執(zhí)行包的初始化代碼或設置 __all__ 變量。
當導入的時候, python就會在 sys.path 路徑中搜索該包。
包的導入有很多種方式,我們可以導入單個模塊:
但是這樣導入之后,使用的時候必須加載全名:
如果不想加載全名,可以這樣導入:
那么就可以這樣使用了:
還可以直接導入模塊中的方法:
然后這樣使用:
如果一個包里面的子包比較多,我們可能會希望使用 * 來一次性導入:
那么如何去控制到底會導入effects的哪一個子包呢?
我們可以在 __init__.py 中定義一個名叫 __all__ 的列表,在這個列表中列出將要導出的子包名,如下所示:
這樣from sound.effects import * 將導入 sound 包的三個命名子模塊。
如果沒有定義 __all__,from sound.effects import * 語句 不會 從包 sound.effects 中導入所有子模塊到當前命名空間;它只會導入包 sound.effects。
Import 可以指定相對路徑,我們使用 . 來表示當前包, 使用 .. 來表示父包。
如下所示:
分享標題:斐波拉函數(shù)python,斐波那契函數(shù)遞歸分析
URL鏈接:http://chinadenli.net/article33/dsejgps.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App設計、做網(wǎng)站、網(wǎng)站制作、標簽優(yōu)化、網(wǎng)站維護、電子商務
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)