如何计算以下递归代码的时间复杂度:

时间:2017-01-18 11:06:58

标签: python-2.7 python-3.x time-complexity

时间复杂度是否应计算为T(n-1,m-1)/ T(n-1,m或T(n-2)?

def isDeelRijRecursief(lijst1,lijst2):
    if len(lijst1) == 1: #vergelijking , hieruit constante halen
        if len(lijst2) > 1: 
            return False

    if len(lijst2) == 1: #vergelijking
        for i in range(len(lijst1)):
            if lijst2[0] == lijst1[i]:
                return True
        return False

    else:
        if lijst1[0] == lijst2[0]: #vergelijking
            return isDeelRijRecursief(lijst1[1:],lijst2[1:]) #T(n-1,m-1)? or T(n-2)?   
        else:
            return isDeelRijRecursief(lijst1[1:],lijst2) # of T(n-1,m)? or T(n-1)?

1 个答案:

答案 0 :(得分:1)

时间复杂度通常用big-O符号定义,表示评估函数的渐近复杂度,即其在极限中的复杂性。

假设第一和第二列表的大小分别为N和M.函数的递归步骤总是会创建一个大小为N-1的新子列表。这意味着递归将在最多N步后达到最低点。该函数的终止条件也必须最多执行N次操作。这意味着函数的时间复杂度实际上是O(N),也就是说,此算法将执行的操作数量为,大​​小为N ,或者渐近地第一个参数大小的线性