Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中打印斐波那契序列的正确方法是什么_Python - Fatal编程技术网

在python中打印斐波那契序列的正确方法是什么

在python中打印斐波那契序列的正确方法是什么,python,Python,为什么我会得到两个不同的结果?是什么使python能够打印2种不同的输出。目前我使用的是python 3 def fibonacci(n): a = 0 b = 1 for i in range(n): a=b b=a+b print(a,end = " ") fibonacci(10) Result = 1 2 4 8 16 32 64 128 256 512 第一个变量需要另一个变量作为中间变量。 用python def fibonacci(n): a,b = 0,

为什么我会得到两个不同的结果?是什么使python能够打印2种不同的输出。目前我使用的是python 3

def fibonacci(n):
 a = 0
 b = 1
 for i in range(n):
  a=b
  b=a+b
  print(a,end = " ")

fibonacci(10)

Result = 1 2 4 8 16 32 64 128 256 512

第一个变量需要另一个变量作为中间变量。 用python

def fibonacci(n):
 a,b = 0,1
 for i in range(n):
  a,b=b,a+b
  print(a,end = " ")

fibonacci(10)

Result = 1 1 2 3 5 8 13 21 34 55

Why i am getting two different results ? what makes the python to print 2 different outputs.Currently i am using python 3.

不同之处在于如何计算总和:

a,b = b, a+b  is equal to 
c = b
b = a +b 
a = c 

a=b
b=a+b
第一个将
a
设置为
b
。因此,在计算
a+b
时,它实际上变成了
b+b
2*b
,这就是为什么会看到倍增序列


第二种求和的方法是一次将所有内容相加并更新。

每次迭代都需要更新
a
b
,如下所示:

a,b=b,a+b
但是,在将旧迭代中的一个变量用于新迭代的值之前,必须小心不要重新分配它。例如:

new_a = old_b
new_b = old_a + old_b
这会正确地更新
a
,但现在
a
的旧值不再可用,
b
最终得到
new\u a
+
old\u b
,这与
old\u b
相同。所以它不起作用。同样,您不能在
a
之前更新
b
,因为
b
的旧值将不再可用

一种解决方案是使用临时变量来保存

a = b
b = a + b
您正在使用的另一种解决方案是同时更新两个值:

t = a
a = b
b = t + b

这首先捕获更改任何内容之前
b
a+b
的值。然后,它将这些值分配给
a
b

第一个值总是尝试用b更新a,下一个值将b作为2b

第二种方法一次执行所有更新,因此您应该能够很好地执行它。要获得第一种方法,您可以按如下方式操作

a,b = b,a+b

在第一次考试中!e在将a与b相加之前,您正在更改a的值。
 for i in range(n):
  print(b)
  b=a+b
  a=b-a