【问题标题】:Complexity of Fibonacci Fast Recursive Program斐波那契快速递归程序的复杂性
【发布时间】:2019-04-25 17:22:47
【问题描述】:
def fastfib(n, fib_dict = {0: 1, 1: 1}):
    if n not in fib_dict:
         fib_dict[n] = fastfib(n-1, fib_dict) + fastfib(n-2, fib_dict)
    return fib_dict[n]

我认为这里的复杂度是 n^2,但我不确定。

【问题讨论】:

    标签: python-3.x recursion fibonacci


    【解决方案1】:

    由于您正在用 n 个值填充字典,因此下限为 O(n)。但是,由于您只对每个 n 进行恒定时间操作(Python 的字典查找操作是 O(1),尽管已摊销),因此该算法应该是 O(n)(摊销)。这种将已计算值保存在表中的技术称为memoization

    【讨论】:

      猜你喜欢
      • 2012-11-29
      • 2013-11-13
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      • 2014-04-02
      • 1970-01-01
      相关资源
      最近更新 更多