为什么斐波那契数列上的两个程序不能给出相似的输出,但直观地说它们似乎相似

2024-05-31 05:01:04 发布

您现在位置:Python中文网/ 问答频道 /正文

# program to generate the Fibonacci sequence 
a, b=0,1
while b<10:
     Print b
     a, b=b,a+b

# my intuitive substitute 
a=0
b=1
while b<10
     print b
     a=b
     b=a+b

上面的代码片段包含两个程序,一个来自Python文档,另一个来自直觉我,我认为它们都会产生类似的结果,但是前者输出1 2 3 5 8,后者输出1 2 4 8。一个好心人能解释一下原因吗?你知道吗


Tags: theto代码文档程序myprogramgenerate
2条回答

此声明:

a, b=b,a+b

这些声明:

a=b
b=a+b

不是一回事。前者在变量具有新值之前完成所有赋值。后者一次做一个。你知道吗

因此,例如,从a = 0b = 1开始,逐步执行逻辑:

a, b=b,a+b
# a was set to 1
# and b was set to 0 + 1

相反地:

a=b
# a was set to 1
b=a+b
# b was set to 1 + 1

在您的示例中,当您执行b = a+b时,您使用的是前一行中修改的a。在Python的例子中,变量是同时分配的。你的工作应该是:

a=0
b=1
while b<10:
     print b
     c=a
     a=b
     b=c+b

相关问题 更多 >