python - python 文档中的这段斐波那契代码与我的重新实现相比有什么问题?

标签 python fibonacci

Python 文档:

>>> def fib(n):
    a,b=0,1
    while a<n:
        print a,
        a,b=b,a+b

>>> fib(2000)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597

我的重新实现:

>>> def fib2(n):
    a=0
    b=1
    while a<n:
        print a
        a=b
        b=a+b

>>> fib2(2000)
0
1
2
4
8
16
32
64
128
256
512
1024

最佳答案

两者的区别

a,b=b,a+b

a=b
b=a+b

是在第二个中,a被赋值为b,然后b被赋值为a的和b,表示它是原始值的两倍。

考虑:

a = 1
b = 2
a,b = b,a+b

这给出了

a==2 (old value of b)
b==3 (sum of 1 and 2)

反之:

a = 1
b = 2
a = b
b = a + b

给出:

a==2 (old value of b)
b==a+b==2+2==4 (twice the old value of b)

关于python - python 文档中的这段斐波那契代码与我的重新实现相比有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27345831/

相关文章:

recursion - Fortran 中的递归子例程如何工作?

c - 基于斐波那契递归缓存

objective-c - 将 NSDecimalNumber 与 Binet 公式结合使用斐波那契数列

python - Pandas 不进口吗? 'NameError: global name ' pandas'未定义'

python - 尝试注销 django 时出现运行时错误

python - 将 Python 正则表达式用于 Twitter 数据

c++ - 在 C++ 中计算巨大的斐波那契数模 M

python - 如何加载放置在不同位置的 jar 文件和支持文件

python - 使用模块变量而不指向它

c - 两个c文件之间的斐波那契共享内存进程