def fei(n):
a=0
b=1
n=0
while n<10:
print(b)
a,b=b,a+b
n=n+1
fei(10)
斐波那契数列是当前数加上前一个数,得到下一个数字。所以我们需要a和b两个变量,b指向当前数,a指向前一个数。然后设置n,用来规定输出数列的长度。
这里需要注意的点有一个,那就是a,b=b,a+b
a, b = b, a + b并不等价于a=b
, b=a+b
a=b , b=a+b 是按照顺序执行的,
而a,b = b, a + b相当于
t = (b, a + b) # t是一个tuple
a = t[0]
b = t[1]
也就是说在a, b = b, a + b中,a=b,但是后面的b=a+b中,a的值还是原先的a的值。等式左右两边的a和b的值在这个运算中暂时不会改变,就比如a=0,b=1的时候,a=b=1,而b=a+b=0+1=1,这样就对应了斐波那契数列的前两个数字。
当然,这个函数最后的输出结果是长长的一个竖排,看起来不容易,我们可以改为一个列表
def fei(n):
a=0
b=1
n=0
L=[]
while n<10:
L.append(b)
a,b=b,a+b
n=n+1
print(L)fei(10)
最后的结果为