首页 > python生成斐波拉契数列

python生成斐波拉契数列

def fib(max):
    n, a, b = 0, 0, 1
    while n < max:
        print(b)
        a, b = b, a + b
        n = n + 1
    return 'done'

这段代码中a, b = b, a + b是怎么执行的。。很疑惑,为什么能生成斐波拉契数列。


python中交换变量最常见的方法是
x,y = y,x
所以这里只是这个形式的变形 希望能帮助你理解
ps:与题目无关这题 用矩阵加速能更快


費氏數列:

f(k) = f(k-1) + f(k-2) for k>=2   ... formula(1)
f(k) = 1               for k=0, 1 ... formula(2)
---------------------------------------------以上為正式定義
f(k) = 0               for k<0 (這是用想像的)

首先要弄清楚的是: n, a, b 所代表的意義:

一開始(k=n=0):

此時均完全符合定義。

接著在 while loop 中我們依次印出第 n 項的值並將 n 往前推進 1。
每印出第 n 項的值: b,我們必須要計算第 n+1 項的值(下一次的 b)。

套用前面的公式:

f(n+1) = f(n) + f(n-1) ... 推導自 formula(1),令 k=n+1
       = b    + a      ... 推導自 meaning(2)(3)
       
而 f(n+1) 即為下一次 loop 的 b 值
----------------------------------------------
b = b + a

這一次 loop 的 b 值即為下一次 loop 的 a 值
----------------------------------------------------------------------------
a = b

所以 a, b = b, a+b
【热门文章】
【热门文章】