我一直在尝试使用 Python 3 生成斐波那契数列。由于我完全不熟悉编程,所以我使用的是基本工具。在这种情况下列出,作为练习。 我遇到的问题是在我希望它停止时停止序列。
例如,我需要一个高达 100 的斐波那契数列,所以我这样写:
fib = [1,2]
n = 0
while max(fib) <= 100:
fib.append(fib[n]+fib[n+1])
n = n+1
print(fib)
print(max(fib))
print(n)
print() 语句仅供我使用,因此我知道发生了什么。
作为返回,我得到:
[1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144]
144
9
所以一切正常,除了我打算在超过 100 之前完成排序。 那为什么我有144呢?我做错了什么?
请您参考如下方法:
一些事情:
- 斐波那契数列以
1, 1, 2, ...开头 - 您检查最大元素是否小于
100,而不是检查下一个 元素是否小于100。
所以,第一个显然很容易改正,只需将fib声明为[1, 1]即可。
至于第二个,您可以使用 while True 循环,然后如果下一个元素大于 100 则中断 >,或者你可以有一个存储下一个的变量,并检查它是否小于 100 作为 while 的评估。
所以,在这一行之后:
fib = [1, 1]
您可以使用:
next = 2
while next <= 100:
fib.append(next)
next += fib[-2]
或
while True:
next = fib[-2] + fib[-1]
if next > 100:
break
fib.append(next)
两者都给出:
[1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
