我正在尝试一种超简单的新手练习。练习的目的是创建一个斐波那契模式,我尝试了两种我认为会产生相同结果的方法。但是开除他们没有的某些原因,我不明白为什么。
有什么想法吗?
代码1
a = 0
b = 1
while b < 100:
print(b)
a = b
b = a + b
代码2:
a, b = 0, 1
while b < 100:
print(b)
a, b = b, a + b
在“代码1”中,a = b
使下一行等效于b = b + b
,这是不正确的。
在“代码2”中,a,b=b,a+b
本质上是new_a = old_b; new_b = old_a + old_b
。从旧值计算出新值,然后将新值分配给变量。这样可以正确计算斐波那契数列。
要在“ CODE 1”中正确执行此操作,需要一个临时变量:
t = a
a = b
b = t + b # use original a saved in t to compute b
a,b=b,a+b
消除了对临时变量的需要。