簡體   English   中英

計算遞歸函數的時間復雜度

[英]calculating time complexity of recursive functions

如何計算 e3 的時間復雜度? 我知道 e3_aux 的復雜度是 O(n),但是 e3 中的 if 語句每 1 到 n 次調用一次。 我知道答案是 T(n)=T(n-1)+O(n),有人能解釋一下為什么嗎?

Function e3(A[1…n],p):

if 𝐴[𝑝] = 0
   return 0
if 𝑝 = 𝑛
   𝑒3_𝑎𝑢𝑥(𝐴, 1)
   return 𝑒3(𝐴, 1) + 1
return 𝑒3(𝐴, 𝑝 + 1)

Function e3_aux(A[1…n],i):

if 𝑖 = 𝑛 + 1
  return
𝐴[𝑖] ← 𝐴[𝑖] − 1
𝑒3_𝑎𝑢𝑥(𝐴, i + 1)

T(n-1) 部分意味着每次調用遞歸 function 時,您將原始問題空間減少 1,而 O(n) 意味着在每次遞歸調用期間,您的 function 最多可以執行n工作量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM