python中简单阶乘函数的空间复杂度

时间:2013-06-25 14:36:25

标签: python factorial space-complexity

python中这个阶乘函数的空间复杂度应该是多少?

def fact(n):
    product = 1

    for i in range(2, n+1):
        product = product * i

    return product

在像C这样的其他语言中,这个想法会导致O(1)空间复杂度,但是对于这个例子,范围(2,n + 1)会导致O(n)空间复杂度的空间复杂度吗?

2 个答案:

答案 0 :(得分:1)

在py2.x range中返回一个列表,因此你的for循环实际上是在迭代该列表。因此,就记忆而言,它是O(N)

您可以在此使用xrange,一次返回一项。

xrange的帮助:

xrange(start, stop[, step]) -> xrange object

Like range(), but instead of returning a list, returns an object that
generates the numbers in the range on demand.  For looping, this is 
slightly faster than range() and more memory efficient.

答案 1 :(得分:0)

它还取决于您使用的是哪个python。

在python 3中,range是一个生成器,就像p​​ython 2中的旧xrange一样。

如果您使用的是python 2,那么它将是O(n)。