首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fibonacci和非fibonacci编码

fibonacci和非fibonacci编码
EN

Stack Overflow用户
提问于 2012-01-11 11:49:12
回答 3查看 199关注 0票数 1

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

代码语言:javascript
复制
>>> 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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-11 11:55:22

区别在于交换时的值是什么

a, b = b, a+b

将a设置为b,并将a设置为a+b,但交换是相对同时进行的,因此这是不符合顺序的,即b中的更改不会考虑a是先更改的。

在第二个示例中

代码语言:javascript
复制
a = b

b = a+b

这些值已更改,并且第二条语句遵循第一条语句的更改

票数 1
EN

Stack Overflow用户

发布于 2012-01-11 11:56:40

交换中存在优先级差异。在第一个示例中,您指定:a=1 b=1

在第二个示例中,您指定:a=1 b=2

为了实现与第一个示例相同的操作顺序,您必须使用temp变量。

票数 1
EN

Stack Overflow用户

发布于 2012-01-11 11:57:29

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8813907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档