时间复杂度是否应计算为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)?
答案 0 :(得分:1)
时间复杂度通常用big-O符号定义,表示评估函数的渐近复杂度,即其在极限中的复杂性。
假设第一和第二列表的大小分别为N和M.函数的递归步骤总是会创建一个大小为N-1的新子列表。这意味着递归将在最多N步后达到最低点。该函数的终止条件也必须最多执行N次操作。这意味着函数的时间复杂度实际上是O(N)
,也就是说,此算法将执行的操作数量为,大小为N ,或者渐近地第一个参数大小的线性。