@Sun... 发表于 2021-12-23 23:47:23

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: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
. . . .
页: [1]
查看完整版本: Python问题,看不懂思路,需要解释