我在python中有以下代码:
def mystery(n):
if n <= 50 :
for i in range(n) :
for j in range(n) :
print i*j
else :
mystery(n-1)
对于以下嵌套的for循环:
for i in range(n) :
for j in range(n) :
对于每一个i
在n
,j
通过迭代n
多达i
倍。难道不是那么复杂O(n^2)
吗?但是,我的同龄人告诉我不是,有人可以解释为什么吗?
这些循环仅在时执行n <= 50
,因此它们只是对繁琐而固定的工作量的简要描述。最多print
执行2500条语句。像任何常量一样,2500与渐近复杂度无关。只有在极限范围内的行为(即,当n无限增长时)才是重要的。
对于较大的n,该函数仅从n递减到50。该部分需要O(n)时间,因此,mystery
总体上来说,时间复杂度是线性的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句