什么是nt-Fibonacci的Big Oh内存消耗

时间:2015-06-29 17:00:04

标签: python memory big-o

鉴于以下递归函数,我如何计算大哦内存消耗?

def nthFib(n):
    if n == 0:
       return 0

    elif n == 1:
         return 1

    return n * nthFin(n-1)

2 个答案:

答案 0 :(得分:1)

在其峰值内存使用情况下,它有N个堆栈帧,每个帧都有一个等待倍增的因子。这需要O(N)内存。

可以使用O(1)存储器计算数字。

如果Python消除了尾递归,则以下将使用O(1)内存:

CAA6A1

如果Python的def _nthFib(acc, n): if n == 1: return acc return _nthFin(acc*n, n-1) def nthFib(n): if n == 0: return 0 return _nthFin(1, n) 是真正的迭代器,则以下使用O(1)内存:

range

答案 1 :(得分:0)

----------------------------------+
    def nthFib(n):
        if n == 0:
           return 0

        elif n == 1:
             return 1

        return n * nthFin(n-1)  
-----------------------------------+

以上部分代码在O(1)时间运行。 但是您将为以下实例调用该代码:n,n-1,n-2 .... 1,0。

总共n + 1次:这意味着:O(1)* n + 1 = O(n + 1)或O(n)