这个嵌套for循环的时间复杂度是多少?

时间:2015-01-25 22:36:08

标签: python big-o time-complexity

我在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中的每个nj遍历ni次。复杂性不应该O(n^2)吗?但是,我的同伴告诉我它不是,有人可以解释为什么吗?

1 个答案:

答案 0 :(得分:6)

这些循环仅在n <= 50时执行,所以它们只是对一个非常重要但不变的工作量的简明描述。最多执行2500 print个语句。像任何常数一样,2500与渐近复杂性无关。只有极限中的行为(即n无限制地增长)才是重要的。

对于较大的n,函数只是从n向下递减到50.该部分需要O(n)时间,因此整个mystery的时间复杂度是线性的。