gpt4 book ai didi

python 斐波那契 - 有什么区别?

转载 作者:太空宇宙 更新时间:2023-11-03 15:45:15 24 4
gpt4 key购买 nike

我正在学习 python,我有一些问题:

有什么区别

a,b = 0,1
for x in range(100):
print(a)
a=b
b=a+b

a,b = 0,1
for x in range(100):
print(a)
a,b = b, a+b

第一个给出了不好的结果,但为什么呢?

最佳答案

因为您首先设置了a = b,所以新的b 的值将是旧b 的两倍。您将 a 覆盖得很早。正确的实现应该使用临时变量t:

a,b = 0,1
for x in range(100):
print(a)
<b>t=a</b>
a=b
b=<b>t</b>+b

这基本上就是使用序列分配所做的事情。

在您的原始代码中,您有:

a,b = 0,1
for x in range(100):
print(a)
a=b # a now is the old b
b=a+b # b is now twice the old a so b'=2*b instead of b'=a+b

因此,这将导致每次乘以 2 进行跳转(在第一步将 1 首次加载到 a 中之后)。

<小时/>

一个等效的问题是变量的交换。如果您希望 a 获取 b 的值,反之亦然,您不能编写:

#wrong swap
a = b
b = a

因为在第一次赋值后你就丢失了a的值。您可以使用临时t:

t = a
a = b
b = t

或者在Python中使用序列赋值:

a,b = b,a

其中首先创建元组t = (b,a),然后将其分配给a,b

关于python 斐波那契 - 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41805929/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com