首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

遞歸函數時間複雜度分析:fun_b(N) = fun_b(N/2) * fun_b(N/2 - 1)

     編輯:程式設計疑難解答

遞歸關係

T(N) = 2 * T(N/2) + O(1)  (近似,忽略 -1)

主定理應用

形式 T(N) = a T(N/b) + f(N),此處 a=2, b=2, f(N)=O(1)。
log_b(a) = log_2(2) = 1,f(N) = O(N^0),屬於情況 1:f(N) = O(N^{log_b a - ε})。
因此 T(N) = Θ(N^{log_b a}) = Θ(N)。

直觀理解

遞歸樹高度 log_2 N,每層節點數翻倍,但葉子節點數約 N,總工作量線性。
注意:基礎情況 N<=1 返回常數,不影響漸近複雜度。

結論

時間複雜度為 O(N),而非題目所述 log_2 N^2。遞歸兩次調用導致線性增長,類似斐波那契數列遞歸實現的指數級,但此處參數縮減為一半,故為線性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved