国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Python > 正文

Python使用while循環輸出斐波那契數列(Fibonacci)

2023-04-26 12:04:39
字體:
來源:轉載
供稿:網友

斐波那契數列又稱費波那契數列(意大利語:Successione di Fibonacci),又譯為費波拿契數、斐波那契數列、費氏數列、黃金分割數列。在西方,首先研究這個數列的是比薩的列奧那多(意大利人斐波那契Leonardo Fibonacci(1175-1250)),斐波那契在1202年著的《計算之書》中描述了該數列。(百度百科)

一、斐波那契數列定義

在數學上,以遞歸的形式來定義這個數列。

F0 = 0F1 = 1Fn = Fn-1 + Fn-2  (n≥2)

也就是說,該數列的第0項是0,第1項是1,從第2項開始,每項都是前兩項的和。

很多教科書中在描述該問題時都是從第1項開始的,也就是說:

F1 = 1F2 = 1Fn = Fn-1 + Fn-2 (n≥3)

二、該問題在Python中的實現

下面給出再Python中的實現方法:

1、列表版

N = 40  #輸出項數
fn = [1,1]  #定義前兩項
i = 2  #從第3項開始計數

# 循環賦值
while i < N:
     fn.append(fn[ i - 1 ] + fn[ i - 2 ])  # 每項是前兩項的和
     i += 1   #循環變量遞增

for e in fn# 迭代輸出列表中的每一項
     print(e)

輸出結果(結果較長,這里省略了中間的項)

1
1
2
3
5
8
13
21
...
24157817
39088169
63245986
102334155
2、變量版

f1 = 1 # 第1項
f2 = 1 # 第2項
i = 2  # 從第3項開始循環
N = 40 / 2  #因為每次輸出兩項,所以除以2

# 每次輸出兩項,因為在循環開始時輸出
# 會造成最后兩項不會輸出,所以這里要+1

while i <= N + 1:
    print(f1,",",f2)
    f1 = f1 + f2  # 第n項
    f2 = f1 + f2 # 第n + 1項
    i += 1 # 循環計數+1

輸出結果:

1 , 1
2 , 3
5 , 8
13 , 21
34 , 55
89 , 144
233 , 377
610 , 987
1597 , 2584
4181 , 6765
10946 , 17711
28657 , 46368
75025 , 121393
196418 , 317811
514229 , 832040
1346269 , 2178309
3524578 , 5702887
9227465 , 14930352
24157817 , 39088169
63245986 , 102334155
3、簡潔版

f1,f2 = 0, 1
N = 40
i = 2

while i <= N + 1:
    print (f2, end = ' ')
    f1,f2 = f2, f1 + f2

這個算法會把所有的項輸出到一行中,每個用空格隔開。

輸出結果:

1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155

4、控制每行輸出的數量

f1,f2 = 0,1
N = 40
i = 2
j = 0
num_per_row = 5
while i <= N + 1:
    print(f2,end = ' ')
    j += 1
    if j % num_per_row == 0:
        print('/n',end = '')
    f1,f2 = f2, f1 + f2
    i += 1

輸出結果:

1 1 2 3 5
8 13 21 34 55
89 144 233 377 610
987 1597 2584 4181 6765
10946 17711 28657 46368 75025
121393 196418 317811 514229 832040
1346269 2178309 3524578 5702887 9227465
14930352 24157817 39088169 63245986 102334155

5、使用函數輸出第n項

def Fibonacci(n):
    if n < 0:
        raise IndexError('參數不能小于0。')
    if n == 0:
        return 0
    elif n <= 2:
        return 1
    else:
        return Fibonacci(n - 1) + Fibonacci(n - 2)

v = Fibonacci(30)
print(v)

輸出結果:

832040以上介紹了Python中計算Fibonacci數列的相關算法,如有不妥之處,請留言評論。

Python中求Fibonacci數列

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 福安市| 连南| 石台县| 祁门县| 收藏| 海城市| 新闻| 聂拉木县| 博白县| 晋宁县| 宣汉县| 梓潼县| 湖州市| 旌德县| 清镇市| 任丘市| 涞源县| 黄大仙区| 南充市| 祁门县| 禄丰县| 鹿泉市| 岳池县| 尼勒克县| 青州市| 西乌| 金寨县| 揭东县| 曲靖市| 行唐县| 浮山县| 青阳县| 东城区| 岢岚县| 宁南县| 大安市| 德惠市| 红安县| 越西县| 合阳县| 车致|