日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【蓝桥杯每日一练】 斐波那契数列

發布時間:2025/3/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【蓝桥杯每日一练】 斐波那契数列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

1.說明

2.原理

3.python實現

第一種:

第二種:

第三種

?第四種


1.說明

Fibonacci為1200年代的歐洲數學家,在他的著作中曾經提到:「若有一只免子每個月生一只小免子,一個月后小免子也開始生產。起初只有一只免子,一個月后就有兩只免子,二個月后有三只免子,三個月后有五只免子(小免子投入生產)......

????????如果不太理解這個例子的話,舉個圖就知道了,注意新生的小免子需一個月成長期才會投入生產,類似的道理也可以用于植物的生長,這就是Fibonacci數列,一般習慣稱之為費氏數列,例如以下: 1、1 、2、3、5、8、13、21、34、55、89......

2.原理

????????斐波那契數列的規律其實就是將前兩項的值相加并得到當前項的值,用for循環和while循環都能實現這個邏輯,如下圖:

賦值原理

  n代表斐波那契數列(以下簡稱數列)中的當前項的值,這個值要存儲起來在下一個循環中與當前循環中的上一項相加,也就是下一個循環中的前二項,由于斐波那契數列是從0和1開始的,所以在循環開始時要初始化a和b的值,將a作為第0項,b作為第一項。在第一次循環中n=a+b=1,這樣n中就儲存了第二項的值,然后將這個值賦值給b,使b中存儲第二項的數列值,也就是當前項的數列值。另外,更重要的一點是,在n賦值給b之前,b一定要將其在當前循環中的值先賦值給a,然后a的值就是下次循環中的第前二項的值。在某次循環中,n始終代表的是數列中當前項的值,b的最終值也是當前項的值,但會留在下一次循環中作為下一次循環的前一項的值使用,而a在本次循環中的最終值則是當前循環中b的初始值,也就是上一次循環的n的值,即當前循環的上一個數列值,下一循環的前二項的值。依次類推,周而復始的計算出斐波那契數列。

3.python實現

第一種:

#斐波那契數列實現 n = int(input("請輸入您要輸出多少項:"))n1 = 0#起始第一項 n2 = 1#起始第二項 count = 2#因為已有第一項和第二項,所以起始次數為2#判斷輸入輸出的合理性并完成輸出 if n <= 0:print("請輸入一個正整數!") elif n == 1:print("斐波那契數列:")print(n1) else:print("斐波那契數列:")print(n1,",",n2,end=" ,")while count < n:sum = n1 + n2print(sum,end=" ,")#更新 n1 n2 的值n1,n2 = n2,sumcount += 1

輸出:

?看到我們得到的結果,最后還有一個逗號,對于我這有強迫癥的人,實在不能接受,那咋整?

第二種:

?消除第一種,后面的逗號

#斐波那契數列實現 n = int(input("請輸入您要輸出多少項:"))n1 = 0#起始第一項 n2 = 1#起始第二項 count = 2#因為已有第一項和第二項,所以起始次數為2#判斷輸入輸出的合理性并完成輸出 if n <= 0:print("請輸入一個正整數!") elif n == 1:print("斐波那契數列:")print(n1) else:print("斐波那契數列:")print(n1,",",n2,end=" ,")while count < n-1:sum = n1 + n2print(sum,end=" ,")#更新 n1 n2 的值n1,n2 = n2,sumcount += 1 if count < n:sum = n1 + n2print(sum,end="")#更新 n1 n2 的值n1,n2 = n2,sumcount += 1

返回:

?在這里,我們可以看到,第一種結果中,最后的 , 沒有了,但這種方法感覺還是比較復雜,那?

第三種

我們用列表來輸出斐波那契數列試試,while循環

#斐波那契數列實現 n = int(input("請輸入您要輸出多少項:"))n1 = 0#起始第一項 n2 = 1#起始第二項 L = [n1,n2] #起始列表#判斷輸入輸出的合理性并完成輸出 if n <= 0:print("請輸入一個正整數!") elif n == 1:print("斐波那契數列:")print(n1) else:print("斐波那契數列:")for i in range(2,n):sum = n1 + n2L.append(sum)#更新 n1 n2 的值n1,n2 = n2,sumprint(L)

返回:

?第四種

for循環輸出列表斐波那契數列

#斐波那契數列實現 n = int(input("請輸入您要輸出多少項:"))n1 = 0#起始第一項 n2 = 1#起始第二項 L = [n1,n2] #起始列表 count = 2#因為已有第一項和第二項,所以起始次數為2#判斷輸入輸出的合理性并完成輸出 if n <= 0:print("請輸入一個正整數!") elif n == 1:print("斐波那契數列:")print(n1) else:print("斐波那契數列:")while count < n:sum = n1 + n2L.append(sum)#更新 n1 n2 的值n1,n2 = n2,sumcount += 1print(L)

輸出:

總結

以上是生活随笔為你收集整理的【蓝桥杯每日一练】 斐波那契数列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。