Fibonacci在Python中非常奇怪

时间:2014-05-27 22:27:54

标签: python algorithm math python-3.x fibonacci

基本上我对Python很陌生,但我已经为Fibonacci序列编写了一个代码并且它不起作用,我已经在网上和它上面进行了比较,但是当我写的时候它有点不同,它的工作原理! - 但是我不知道为什么,任何人都能解释为什么它会这样表现吗?

此代码已在Python 3.3.2 Shell中构建和测试。

工作代码:

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

非工作代码:

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

我完全混淆了为什么它只在变量组合在一起时才有效,而不是在它们分开时。

2 个答案:

答案 0 :(得分:4)

我相信它在a,b = b,b+a行。

实际执行的版本做的事情有点不同。扩展形式将是:

c = a
a = b
b = b + c

由于b增加了a的初始值,而不是调整后的值。

答案 1 :(得分:2)

为了扩展Yeraze的答案,实际的任务更接近

# Make the tuple
a_b = (b, b+a)

# Unpack the tuple
a = a_b[0]
b = a_b[1]

因此更明显的原因是为什么设置然后分配值。