国产探花免费观看_亚洲丰满少妇自慰呻吟_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數列

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 杂多县| 彝良县| 江津市| 闽清县| 聊城市| 平舆县| 黄浦区| 孝昌县| 方城县| 志丹县| 丹寨县| 福海县| 祁门县| 定襄县| 克山县| 山东省| 霍山县| 桃园市| 永昌县| 茶陵县| 循化| 宁国市| 合作市| 江西省| 通海县| 辽宁省| 广宁县| 彰化市| 张家界市| 苍溪县| 涿鹿县| 嫩江县| 阿巴嘎旗| 乌拉特后旗| 凉城县| 科技| 自治县| 象州县| 辉南县| 潜江市| 湖北省|