【蓝桥杯每日一练】 斐波那契数列
目錄
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)輸出:
總結
以上是生活随笔為你收集整理的【蓝桥杯每日一练】 斐波那契数列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux系统安装及配置——Centos
- 下一篇: android存到手机内存,androi