【问题标题】:Is there a way to list all the fibonacci numbers in a sequence?有没有办法按顺序列出所有斐波那契数字?
【发布时间】:2019-07-04 23:10:54
【问题描述】:

我刚开始学习 python 并尝试将所有斐波那契数列到第 n 项。我已经编写了一些我认为在正确轨道上的代码,但我对下一步该去哪里感到困惑

def fibonacci(n):
    l = [0,1]
    for i in range(2,n)
         fibonacci(i-1) + fibonacci(i-2)

代码不完整,我知道我必须将最后一行链接回之前的代码,但我对下一步该去哪里感到很困惑。请问,有人可以帮忙吗?

【问题讨论】:

  • 至于您在标题中的问题 - 是的一些。随意谷歌斐波那契,你会找到他们。至于您的代码-您没有正确使用递归,主要是缺少停止条件,不返回任何内容并在递归中使用循环
  • 很抱歉,错过停止条件是什么意思?那么在 fib(i-1) 行之后应该有另一个条件吗?循环内部的递归如何?
  • 我建议您尝试阅读一些关于递归的内容。看一些例子来掌握它,你会明白我的意思

标签: python python-3.x fibonacci python-3.7


【解决方案1】:

这可能是一种实现方式。这里 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;

【讨论】:

    【解决方案2】:

    在互联网上快速搜索一下,您会发现有一些有趣的方法可以实现斐波那契代码。主要的基本是:迭代和递归。您的代码的问题在于您将它们混合在一起。

    如果您想使用递归,您缺少的主要成分是:停止条件和实际步骤(因为您没有返回任何内容)。要使用递归,您必须确保它会在某个点停止。为此,我们使用停止条件。在我们的例子中,停止条件是已知值:01。所以我们会想要这样的东西:

    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 以查看代码的可视化。会帮助你理解。

    【讨论】:

      【解决方案3】:

      一个(概念上)提供所有的生成器让用户决定取多少:

      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
      

      【讨论】:

        猜你喜欢
        • 2017-05-08
        • 1970-01-01
        • 2020-01-18
        • 1970-01-01
        • 2014-05-17
        • 2014-03-21
        • 2021-05-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多