空间复杂度(Python)

时间:2018-09-24 10:10:37

标签: python time-complexity space-complexity

我有一个问题,假设gdc(i,n)的时间和空间复杂度为O(1),此函数的空间复杂度是多少? 由于for循环,时间复杂度为O(n)。 空间复杂度如何?答案是O(1),但我不明白为什么...导致for循环占用n个空间,所以不应该是O(n)吗?

def gcd_fun(n):
   for i in range(1, n+1):
      result += gcd(i, n)
   return result

1 个答案:

答案 0 :(得分:2)

这取决于您的python版本。如果您使用的是python 2,它将为range函数创建列表。列表分别需要O(n)的存储复杂度。否则,如果您使用的是python 3,它将创建生成器。

更新:正如Vineeth所说,范围不是迭代器。很抱歉误导。

根据文档:

  

与常规列表或元组相比,范围类型的优势在于,范围对象将始终占用相同(少量)的内存,无论其表示的范围大小如何(因为它仅存储开始,停止和步长值,并根据需要计算各个项目和子范围。