在python中打印斐波那契序列的正确方法是什么
为什么我会得到两个不同的结果?是什么使python能够打印2种不同的输出。目前我使用的是python 3在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,
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