Python问题,看不懂思路,需要解释
import sys#1 1 2 3 5 8
n1=1;n2=1;n3=2
p=15
if (p==1 or p==2):
print(1);
else :
for i in range(p-2):
print(9," i=",i,"\n")
n1=n2;
n2=n3;
n3=n1+n2;
print(13," n1=",n1,",n2=",n2,",n3=",n3,"\n")
sys.exit()
本帖最后由 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
. . . .
页:
[1]