我的python函数的空间复杂度是多少?

时间:2017-10-18 00:41:19

标签: python space-complexity

有人能告诉我这个python函数的空间复杂度是多少? 我相信这是O(1),但我的朋友们告诉我这是O(N)。

他们说O(N)的原因: 您正在for循环的每次迭代中创建一个新的'a'。

我之所以说O(1):你每次迭代并抛弃旧的'a'时都会创建一个新的'a'。

def hello(n):
  for i in range(n):
    a = 10

如果这是伪代码,空间复杂度是否相同?

1 个答案:

答案 0 :(得分:2)

a 只是一个变量,在这里你指定一个带整数值,对于这一点,空间复杂度是O(1)。

但我认为衡量的关键是for i in range(n)声明。

python2 中,因为range(n)将创建一个包含n个元素的列表,所以空间复杂度为O(n)。

python3 中,range(n)将返回一个迭代器(不创建整个n长度列表),因此空间复杂度为O(1)。