|
发表于 2021-12-24 00:34:43
|
显示全部楼层
本帖最后由 jackz007 于 2021-12-24 00:57 编辑
运行一下这个代码你会看的更加清楚:n1 , n2 , n3 , n = 1 , 1 , 1 , 15
for i in range(1 , n + 1):
if i > 2 :
n3 = n1 + n2
n1 , n2 = n2 , n3
print('i = {:3d} , n3 = {:3d} ' . format(i , n3))
运行实况:D:\00.Excise\Python>python x.py
i = 1 , n3 = 1
i = 2 , n3 = 1
i = 3 , n3 = 2
i = 4 , n3 = 3
i = 5 , n3 = 5
i = 6 , n3 = 8
i = 7 , n3 = 13
i = 8 , n3 = 21
i = 9 , n3 = 34
i = 10 , n3 = 55
i = 11 , n3 = 89
i = 12 , n3 = 144
i = 13 , n3 = 233
i = 14 , n3 = 377
i = 15 , n3 = 610
D:\00.Excise\Python>
当 i = 1 和 i = 2 的时候,n3 的值都是 1(其实,对应 n1、n2),从 i = 3 的时候起,n3 = n1 + n2,然后,新的 n1 是原来的 n2,新的 n2 是才算出来的 n3,再开始下一次循环,如此往复,直到 i 到达指定的数值为止,把所有的 n3 顺序写出,就是斐波那契数列。其效果就是,每一个 n3 都是前 2 个 n3 值的和。
i = 3 : n1 = 1 , n2 = 1 , n3 = n1 + n2 = 1 + 1 = 2 , n1 = n2 = 1 , n2 = n3 = 2
i = 4 : n1 = 1 , n2 = 2 , n3 = n1 + n2 = 1 + 2 = 3 , n1 = n2 = 2 , n2 = n3 = 3
i = 5 : n1 = 2 , n2 = 3 , n3 = n1 + n2 = 2 + 3 = 5 , n1 = n2 = 3 , n2 = n3 = 5
i = 6 : n1 = 3 , n2 = 5 , n3 = n1 + n2 = 3 + 5 = 8 , n1 = n2 = 5 , n2 = n3 = 8
. . . . |
|