直接創(chuàng)建一個(gè)類然后調(diào)用下面的def函數(shù)即可

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供科爾沁右翼前網(wǎng)站建設(shè)、科爾沁右翼前做網(wǎng)站、科爾沁右翼前網(wǎng)站設(shè)計(jì)、科爾沁右翼前網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、科爾沁右翼前企業(yè)網(wǎng)站模板建站服務(wù),十多年科爾沁右翼前做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
#斐波那契數(shù)列
'''
第一位是1
第二位是1
第三位是2
公式位F(n)=f(n-1)+f(n-2)
'''
def get_Fibonacci_sequence(n):
'''輸入n,遍歷到第n位的斐波那契數(shù)列'''
a,b=0,1
if n=3:#即等于2 相當(dāng)于1,2位特殊處理
for i in range(n-1):#操作次數(shù)是n-1,去除一次第一位的操作
c=a+b
a,b,=b,c
print(b)#這里選擇先改變?cè)佥敵觯梢詼p少1次的循環(huán)
def get_Fibonacci_Num(n):
'''輸入n,遍歷到第n位的斐波那契數(shù)列的第n位數(shù)'''
a, b = 0, 1
if n = 3: # 即等于2 相當(dāng)于1,2位特殊處理
for i in range(n - 1): # 操作次數(shù)是n-1,去除一次第一位的操作
c = a + b
a, b, = b, c
# 這里選擇先改變?cè)佥敵觯梢詼p少1次的循環(huán)
return b
def get_Fibonacci_Num_recursion(n):
'''輸入n,遍歷到第n位的斐波那契數(shù)列的第n位數(shù),遞歸實(shí)現(xiàn)'''
if n==1 or n==2:#特別注意,這里要用邏輯或判斷,不能直接用或判斷,
return 1
else:
return get_Fibonacci_Num_recursion(n-1)+get_Fibonacci_Num_recursion(n-2)
get_Fibonacci_sequence(11)
print(get_Fibonacci_Num(11))
print(get_Fibonacci_Num_recursion(11))
首先我們要了解一下什么是遞歸。
遞歸法,遞歸法就是利用上一個(gè)或者上幾個(gè)狀態(tài)來求取當(dāng)前狀態(tài)的值(個(gè)人看法)。也可以說成函數(shù)自己調(diào)用自己的一種解決問題的策略。因此遞歸法通常是依托函數(shù)來實(shí)現(xiàn)的,遞歸函數(shù)總是會(huì)有一個(gè)出口,我們?cè)诮鉀Q遞歸問題時(shí),只需要找出遞歸的關(guān)系式以及遞歸函數(shù)的出口(這兩個(gè)可以說是遞歸函數(shù)的核心了)。下面我將在這里舉求斐波那契值的例子帶領(lǐng)著大家具體的實(shí)踐一下遞歸法。
很顯然遞歸函數(shù)的遞推式是:fib(n) = fib(n-1)+fib(n-2)。
遞歸函數(shù)的出口是當(dāng)n為1時(shí)返回1,當(dāng)n為0時(shí)返回0。
最后遞歸函數(shù)的核心代碼就可以寫出了:
然后總的代碼就是:
具體思路如下:
語句 return fib(n-1)+fib(n-2)的意思就是向前求斐波那契值,直到n-1=1,n-2=0
因?yàn)橹挥械?個(gè)和第0個(gè)斐波那契值是確定的
例:
當(dāng)n=3時(shí)
第一次調(diào)用函數(shù)fib會(huì)執(zhí)行第三條語句(因?yàn)閚1)這樣求回返回fib(2)+fib(1)
第二次調(diào)用函數(shù)時(shí),因?yàn)?1所有會(huì)返回fib(1)+fib(0);因?yàn)?不大于1,所以調(diào)用函數(shù)時(shí)
會(huì)執(zhí)行第二條語句返回1值。
第三次調(diào)用函數(shù),會(huì)執(zhí)行第一和第二條語句,依次返回0和1從而求得fib(2)
fib(3)=fib(2)+fib(1)
fib(2)=fib(1)+fib(0)
即fib(3)=fib(1)+fib(0)+fib(1)=2*fib(1)+fib(0)
斐波那契數(shù)列指的是這樣一個(gè)數(shù)列 0, 1, 1, 2, 3, 5, 8, 13,特別指出:第0項(xiàng)是0,第1項(xiàng)是第一個(gè)1。從第三項(xiàng)開始,每一項(xiàng)都等于前兩項(xiàng)之和。
def fib(num):
fibs=[0,1]
#num=input('請(qǐng)輸入婓波那契數(shù)列中的數(shù)據(jù)個(gè)數(shù):')
for i in range(int(num)-2):
fibs.append(fibs[-2]+fibs[-1])
print(fibs)
print(fibs[-2])
fib(10)
在數(shù)學(xué)上
斐波那契數(shù)列以如下被以遞推的方法定義:F(0)=0,F(xiàn)(1)=1,?F(n)=F(n - 1)+F(n - 2)(n?≥ 2,n?∈ N*)在現(xiàn)代物理、準(zhǔn)晶體結(jié)構(gòu)、化學(xué)等領(lǐng)域,斐波納契數(shù)列都有直接的應(yīng)用,為此,美國(guó)數(shù)學(xué)會(huì)從 1963 年起出版了以《斐波納契數(shù)列季刊》為名的一份數(shù)學(xué)雜志,用于專門刊載這方面的研究成果。
斐波那契數(shù)列指的是這樣一個(gè)數(shù)列 0, 1, 1, 2, 3, 5, 8, 13,特別指出:第0項(xiàng)是0,第1項(xiàng)是第一個(gè)1。從第三項(xiàng)開始,每一項(xiàng)都等于前兩項(xiàng)之和。
# 判斷輸入的值是否合法
if nterms = 0:
print("請(qǐng)輸入一個(gè)正整數(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
平方與前后項(xiàng)
從第二項(xiàng)開始(構(gòu)成一個(gè)新數(shù)列,第一項(xiàng)為1,第二項(xiàng)為2,……),每個(gè)偶數(shù)項(xiàng)的平方都比前后兩項(xiàng)之積多1,每個(gè)奇數(shù)項(xiàng)的平方都比前后兩項(xiàng)之積少1。如:第二項(xiàng) 1 的平方比它的前一項(xiàng) 1 和它的后一項(xiàng) 2 的積 2 少 1,第三項(xiàng) 2 的平方比它的前一項(xiàng) 1 和它的后一項(xiàng) 3 的積 3 多 1。
名稱欄目:關(guān)于python裴波那契函數(shù)的信息
文章位置:http://chinadenli.net/article46/dsehheg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、服務(wù)器托管、品牌網(wǎng)站建設(shè)、微信小程序、網(wǎng)站維護(hù)、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)