斐波那契數(shù)列指的是這樣一個數(shù)列 0, 1, 1, 2, 3, 5, 8, 13,特別指出:第0項是0,第1項是第一個1。從第三項開始,每一項都等于前兩項之和。
站在用戶的角度思考問題,與客戶深入溝通,找到揚州網(wǎng)站設計與揚州網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站設計、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名申請、虛擬空間、企業(yè)郵箱。業(yè)務覆蓋揚州地區(qū)。
# 判斷輸入的值是否合法
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。
代碼實現(xiàn)斐波那契數(shù)列 運行的結果 在Python代碼中給num傳的值是10,所以會得到10個斐波那契數(shù)列的值,
首先我們要了解一下什么是遞歸。
遞歸法,遞歸法就是利用上一個或者上幾個狀態(tài)來求取當前狀態(tài)的值(個人看法)。也可以說成函數(shù)自己調用自己的一種解決問題的策略。因此遞歸法通常是依托函數(shù)來實現(xiàn)的,遞歸函數(shù)總是會有一個出口,我們在解決遞歸問題時,只需要找出遞歸的關系式以及遞歸函數(shù)的出口(這兩個可以說是遞歸函數(shù)的核心了)。下面我將在這里舉求斐波那契值的例子帶領著大家具體的實踐一下遞歸法。
很顯然遞歸函數(shù)的遞推式是:fib(n) = fib(n-1)+fib(n-2)。
遞歸函數(shù)的出口是當n為1時返回1,當n為0時返回0。
最后遞歸函數(shù)的核心代碼就可以寫出了:
然后總的代碼就是:
具體思路如下:
語句 return fib(n-1)+fib(n-2)的意思就是向前求斐波那契值,直到n-1=1,n-2=0
因為只有第1個和第0個斐波那契值是確定的
例:
當n=3時
第一次調用函數(shù)fib會執(zhí)行第三條語句(因為n1)這樣求回返回fib(2)+fib(1)
第二次調用函數(shù)時,因為21所有會返回fib(1)+fib(0);因為1不大于1,所以調用函數(shù)時
會執(zhí)行第二條語句返回1值。
第三次調用函數(shù),會執(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ù)列 ( 意大利語 :Successione di Fibonacci) 的定義 :
斐波那契數(shù)列由0和1開始,之后的每個斐波那契數(shù)就是由之前的兩數(shù)相加而得出。具體數(shù)值如下:
0,1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610,..............
特別注意 :F(0)代表的是第一個數(shù)值,數(shù)列下標由0開始。
代碼如上,用了迭代的算法計算每個數(shù)值,每個N值最大運行N-1次循環(huán),算法比遞歸要高效很多。遞歸代碼如下:
直接創(chuàng)建一個類然后調用下面的def函數(shù)即可
#斐波那契數(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 相當于1,2位特殊處理
for i in range(n-1):#操作次數(shù)是n-1,去除一次第一位的操作
c=a+b
a,b,=b,c
print(b)#這里選擇先改變再輸出,可以減少1次的循環(huán)
def get_Fibonacci_Num(n):
'''輸入n,遍歷到第n位的斐波那契數(shù)列的第n位數(shù)'''
a, b = 0, 1
if n = 3: # 即等于2 相當于1,2位特殊處理
for i in range(n - 1): # 操作次數(shù)是n-1,去除一次第一位的操作
c = a + b
a, b, = b, c
# 這里選擇先改變再輸出,可以減少1次的循環(huán)
return b
def get_Fibonacci_Num_recursion(n):
'''輸入n,遍歷到第n位的斐波那契數(shù)列的第n位數(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))
斐波那契數(shù)列指的是這樣一個數(shù)列 0, 1, 1, 2, 3, 5, 8, 13,特別指出:第0項是0,第1項是第一個1。從第三項開始,每一項都等于前兩項之和。
Python 實現(xiàn)斐波那契數(shù)列代碼如下:
#?-*-?coding:?UTF-8?-*-
#?Filename?:?test.py
#?author?by?:?
#?Python?斐波那契數(shù)列實現(xiàn)
#?獲取用戶輸入數(shù)據(jù)
nterms?=?int(input("你需要幾項?"))
#?第一和第二項
n1?=?0
n2?=?1
count?=?2
#?判斷輸入的值是否合法
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
執(zhí)行以上代碼輸出結果為:
你需要幾項? 10
斐波那契數(shù)列:
0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 ,
文章標題:斐波那契函數(shù)python 斐波那契函數(shù)圖像
轉載源于:http://www.rwnh.cn/article24/hhgsje.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、品牌網(wǎng)站制作、網(wǎng)站維護、動態(tài)網(wǎng)站、、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)