Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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
List 斐波那契数列乘法_List_Python 2.7_While Loop_Sequence_Fibonacci - Fatal编程技术网

List 斐波那契数列乘法

List 斐波那契数列乘法,list,python-2.7,while-loop,sequence,fibonacci,List,Python 2.7,While Loop,Sequence,Fibonacci,我尝试用以下代码生成斐波那契序列: def fibonacci(n): # write Fibonacci series up to n """Print a Fibonacci series up to n.""" a = 0 b = 1 the_list = [] while n > len(the_list): the_list.append(a) #By saying a = b and b = a+b we defi

我尝试用以下代码生成斐波那契序列:

def fibonacci(n): # write Fibonacci series up to n
    """Print a Fibonacci series up to n."""
    a = 0
    b = 1
    the_list = []
    while n > len(the_list):
        the_list.append(a)
    #By saying a = b and b = a+b we define the
    #fibonacci sequence, since this is how the
    #fibonacci sequence works.
        a = b
        b = a+b
    print the_list
# Now call the function we just defined:
fibonacci(10)
据我所知,这段代码应该能做到,但不是给我斐波那契序列,而是给出以下输出:

[0, 1, 2, 4, 8, 16, 32, 64, 128, 256]
所以我的斐波那契序列是相乘的,而不是正确的工作。我不知道为什么,因为我想

a = b
b = a+b
应该这样做,如果我看我的while循环,这个循环的语句也是正确的,所以我不明白为什么我得不到正确的输出


因此,如果有人能解释为什么这段代码不起作用,我会非常感激你的代码因为逻辑缺陷而创建了一个指数序列。根据您的代码:

Start:
a = 0
b = 1

1st iteration:
a = b = 1
b = a + 1 = 1 + 1 = 2

2nd iteration:
a = b = 2
b = a + 2 = 2 + 2 = 4
正如您所见,在执行
b
计算之前设置
a
会导致您的问题

相反,您需要(证明这一点):

额外的一点数学运算将消除对额外变量的需要:

b += a
a = b - a
但最简单(也是最具Python风格)的方法是:

a, b = b, a + b

思考每个迭代中发生的事情<代码>a被分配
b
的值,然后
b
被设置为
a
+
b
。从
b=1
的迭代开始,首先设置
a=1
,然后设置
b=a+b=1+1=2
a, b = b, a + b