我刚刚开始学习python,并尝试将所有斐波那契数列到第n个词。我写了一些我认为正确的代码,但是我对下一步该怎么办感到困惑
def fibonacci(n):
l = [0,1]
for i in range(2,n)
fibonacci(i-1) + fibonacci(i-2)
代码是不完整的,我知道我必须将最后一行链接回早期的代码,但是我对下一步该怎么办感到困惑。拜托,有人可以帮忙吗?
答案 0 :(得分:0)
这可能是一种实现方式。这里n是第n个项。
n = 25
a = 0
b = 1
print(a)
print(b)
for i in range(n-2):
c = a + b;
print(c)
a = b;
b = c;
答案 1 :(得分:0)
在Internet上进行快速搜索将显示一些实现斐波那契代码的有趣方法。主要的基本要素是:迭代和递归。代码的问题是您将两者混在一起。
如果要使用递归,则缺少的主要要素是:停止条件和实际步骤(因为您不返回任何东西)。要使用递归,您必须确保它会在某个时刻停止。为此,我们使用停止条件。在我们的情况下,停止条件为已知值:0
和1
。所以我们会想要类似的东西:
if n == 1:
return 0
if n == 2:
return 1
现在我们有了停止状态,剩下的就很容易了。只需执行该步骤,其余的将独立工作:
def fib_rec(n):
if n == 1:
return 0
if n == 2:
return 1
return fib_rec(n-1) + fib_rec(n-2)
跳至this link可以看到那里发生的情况。
如果要使用循环,则需要通过交换变量的值来确定逻辑。像这样:
def fib_loop(n):
prev = 0
cur = 1
for _ in range(2, n):
next = prev + cur
prev = cur
cur = next
return next
同样,转到here以查看代码的可视化。将帮助您理解。
答案 2 :(得分:0)
(概念上)提供其中所有 的生成器让用户决定要摄取多少:
def fibonacci():
a = 0
b = 1
while True:
yield a
a, b = b, a + b
from itertools import slice
first_ten = list(islice(fibonacci(), 10))
first_twenty = list(islice(fibonacci(), 20))
# etc