计算递归函数的时间复杂度
Posted
技术标签:
【中文标题】计算递归函数的时间复杂度【英文标题】:calculating time complexity of recursive functions 【发布时间】:2022-01-04 17:48:54 【问题描述】:如何计算 e3 的时间复杂度? 我知道 e3_aux 的复杂度是 O(n),但是 e3 中的 if 语句每 1 到 n 次调用一次。 我知道答案是T(n)=T(n-1)+O(n),有人能解释一下为什么吗?
函数 e3(A[1…n],p):
if ????[????] = 0
return 0
if ???? = ????
????3_????????????(????, 1)
return ????3(????, 1) + 1
return ????3(????, ???? + 1)
函数 e3_aux(A[1…n],i):
if ???? = ???? + 1
return
????[????] ← ????[????] − 1
????3_????????????(????, i + 1)
【问题讨论】:
我相信你用最坏的情况来表达,在这种情况下是 n*n,所以 n^2。 【参考方案1】:T(n-1) 部分意味着您每次调用递归函数时都将原始问题空间减少 1,而 O(n) 意味着在每次递归调用期间,您的函数预计最多做 n 份工作。
【讨论】:
以上是关于计算递归函数的时间复杂度的主要内容,如果未能解决你的问题,请参考以下文章