【问题标题】:implementing bottom up fibonacci in python在python中实现自下而上的斐波那契
【发布时间】:2016-04-29 20:51:37
【问题描述】:

我正在尝试实现在 O(n) 时间内运行的自下而上的斐波那契版本,但不断收到列表分配索引错误,我不知道为什么。这是我的代码:

def fibbu(n):
    fib = [1,1]
    for i in range(2, n):
        fib[i] = fib[i-2] + fib[i-1]
    return fib[n]

但是我在 for 循环内的行上得到一个 indexerror。我在这么简单的事情上花了太长时间,谁能指出我哪里出错了?

【问题讨论】:

  • 你需要追加到列表中。

标签: python dynamic-programming fibonacci


【解决方案1】:

这将起作用:

def fibbu(n):
    fib = [1,1]
    for _ in range(2, n):
        fib.append(fib[-2] + fib[-1])
    return fib[-1]

您有一个包含两个元素的列表,并且您试图修改第三个元素,因此出现了异常。在上面的代码中,我们将新元素附加到列表的末尾。索引-1 表示最后一个元素,-2 表示倒数第二个。请注意,您实际上不再需要 i,您正在引用列表中相对于其末尾的元素。

【讨论】:

  • 太好了,谢谢!到时我会用来给你“答复”
猜你喜欢
  • 2021-08-17
  • 2013-04-15
  • 2016-08-25
  • 1970-01-01
  • 2014-05-23
  • 1970-01-01
  • 2011-05-07
  • 2011-12-12
  • 2011-09-27
相关资源
最近更新 更多