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
是怎么执行的。。很疑惑,为什么能生成斐波拉契数列。
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
是怎么执行的。。很疑惑,为什么能生成斐波拉契数列。
費氏數列:
首先要弄清楚的是:
n
,a
,b
所代表的意義:n
: 數列的index...................................meaning(1)a
: 代表數列的第 n-1 項的值 f(n-1)......meaning(2)b
: 代表數列的第 n 項的值 f(n).............meaning(3)一開始(k=n=0):
n=0
: 從第0項開始a=0
: 數列的第-1項(此時k=n=0,k-1=n-1=-1) 值為0b=1
: 數列的第 0項(此時k=n=0) 值為1此時均完全符合定義。
接著在 while loop 中我們依次印出第 n 項的值並將
n
往前推進 1。每印出第 n 項的值:
b
,我們必須要計算第 n+1 項的值(下一次的b
)。套用前面的公式: