【发布时间】:2014-11-28 00:59:30
【问题描述】:
我尝试使用以下代码制作斐波那契数列:
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 循环,这个循环的语句也是正确的,所以我只是不明白为什么我没有得到正确的输出。
因此,如果有人可以解释为什么这段代码不起作用,那将是高度赞赏
【问题讨论】:
-
想想每次迭代发生了什么。
a被分配b的值,然后b被设置为a+b。从b=1的迭代开始,首先设置a=1,然后设置b = a + b = 1 + 1 = 2。
标签: list python-2.7 while-loop sequence fibonacci