作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前正在学习编程类(class),并得到了查找第一个超过一百万的斐波那契数的作业,但我在查找特定数字时遇到了一些麻烦。当第 n: 个数字达到 100 万时,我还应该找到它的索引。我对编码还很陌生,但这就是我到目前为止所想到的,只是很难弄清楚如何实际计算这个数字。
我猜你会用 while 循环替换 for-,但还没有弄清楚如何让它全部工作。
预先感谢:)
def fib_seq(n):
if n <= 2:
return 1
return fib_seq(n-1) + fib_seq(n-2)
lst = []
for i in range(1, 20):
lst.append(i)
print(fib_seq(i), lst)
最佳答案
几点:
您不需要建立一个列表。您只需返回索引和相应的斐波那契数。
斐波那契的递归算法不是最佳实践,除非您使用一些内存。否则,必须一遍又一遍地重新计算相同的数字。请改用迭代方法。
这是这样的:
def fib(atleast):
a = 0
b = 1
i = 1
while b < atleast:
a, b = b, a+b
i += 1
return i, b
print(fib(1000000)) # (31, 1346269)
关于python - 找到第一个超过 100 万的斐波那契数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54494269/
我是一名优秀的程序员,十分优秀!