不同的语法,不同的结果

问题描述 投票:0回答:1

我正在尝试一种超简单的新手练习。练习的目的是创建一个斐波那契模式,我尝试了两种我认为会产生相同结果的方法。但是开除他们没有的某些原因,我不明白为什么。

有什么想法吗?

代码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
python-3.x syntax fibonacci
1个回答
0
投票

在“代码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消除了对临时变量的需要。

© www.soinside.com 2019 - 2024. All rights reserved.