【问题标题】:difference between these two fibonacci python code这两个斐波那契python代码之间的区别
【发布时间】:2022-10-18 00:57:51
【问题描述】:

这两个 python 代码有什么区别?我认为两者是相同的,但我得到的输出是不同的

def 斐波那契(数字):
        a=1
        b=1
        系列=[]
        series.append(a)
        series.append(b)
        对于范围内的 i (1,num-1):
            series.append(a+b)
            #a,b=b,a+b
            a=b
            b=a+b
            
            
            
        回归系列
    打印(斐波那契(10))
def 斐波那契(数字):
        a=1
        b=1
        系列=[]
        series.append(a)
        series.append(b)
        对于范围内的 i (1,num-1):
            series.append(a+b)
            a,b=b,a+b
            #a=b
            #b=a+b
            
            
            
        回归系列
    打印(斐波那契(10))

【问题讨论】:

标签: python python-3.x fibonacci


【解决方案1】:

在第一种方法中

a=b
b=a+b

是一种不正确的交换方式,当你说a=b 时你失去了a 的值,所以b=a+bb=b+b 相同,这不是你想要的。

另一种实现与此方法等效结果的方法a,b = b,a+b 是使用临时变量来存储a,如下所示:

tmp = a
a = b
b = tmp + b 

【讨论】:

    【解决方案2】:

    他们是两个不同的东西。两者之一是没有正确交换值。详细说明:a, b = b, a + b 相同

    temp = a 
    a = b 
    b = temp + b
    
    #and not to 
    a = b
    b = a+b #because in this operation a has changed value
    

    【讨论】:

      【解决方案3】:

      这里的问题是关于存储你正在计算的值,在第一个 sn-p 上你说 a+b 只在第二个 sn-p 你说 b =a+b。当你说 b = a+b 时,b 的值正在改变。

      希望我的解释是可以理解的。您正在重新分配第一个 sn-p (b=a+b) 的值

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-25
        • 1970-01-01
        • 2017-08-06
        • 1970-01-01
        • 1970-01-01
        • 2010-09-22
        • 2014-05-23
        • 1970-01-01
        相关资源
        最近更新 更多