我正在尝试制作斐波那契数列,但我不明白为什么会这样:
def fibonacci(n):
f1 = 0
f2 = 1
i = 1
while i < n:
print(f2)
f1 = f2
f2 = f1 + f2
i += 1
return f3
Run Code Online (Sandbox Code Playgroud)
返回 1, 2, 4, 8,而:
def fibonacci(n):
f1 = 0
f2 = 1
i = 1
while i < n:
print(f2)
f1, f2 = f2, f1 + f2
i += 1
return f3
Run Code Online (Sandbox Code Playgroud)
返回斐波那契数列。
在后一个示例中,首先评估右侧:
f1, f2 = f2, f1 + f2
Run Code Online (Sandbox Code Playgroud)
f1因此计算中使用的值f2是“旧”值。
在您的代码中,当您执行以下操作时:
f1 = f2
f2 = f1 + f2
Run Code Online (Sandbox Code Playgroud)
f1当您去评估 的新值时,的值已经发生变化f2。