【问题标题】: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。

标签: java recursion time-complexity


【解决方案1】:

T(n-1) 部分意味着您每次调用递归函数时都将原始问题空间减少 1,而 O(n) 意味着在每次递归调用期间,您的函数预计最多做 n 份工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    • 2018-08-18
    相关资源
    最近更新 更多