斐波纳契和非斐波那契编码

时间:2012-01-11 03:49:12

标签: python fibonacci

我道歉,因为这可能是一个常见的问题,但我想我正在寻找一个在其他主题中找不到的非常具体的答案。基本上,我对添加数字的流程感到很困惑。这里有两个类似的代码,可以不同地计算数字这有什么简单的解释吗?

>>> a = 0
>>> b = 1
>>> while b <1000:
    print b
        a, b = b, a+b


1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987

>>> a =0
>>> b=1
>>> while b<1000:
       print b
       a = b
       b = a+b


1,2,4,8,16,32,64,128,256,512

3 个答案:

答案 0 :(得分:1)

不同之处在于交换时的值是什么

a, b = b, a+b

将a设置为b并将a设置为a + b但是交换是相对同时完成的,因此它不是有序的,即b的变化不考虑a先被改变。

在第二个例子中

a = b

b = a+b

更改值,第二个语句尊重第一个

的更改

答案 1 :(得分:1)

交换存在优先区别。 在第一个示例中,您要分配: a = 1 b = 1

在第二个示例中,您要分配: a = 1 b = 2

为了实现与第一个例子相同的操作顺序,你必须使用temp var。

答案 2 :(得分:0)

分配在第一个代码示例中同时发生,在第二个代码中连续发生,导致不同的答案。