在分析一些代碼,我已經寫了,我來了下面迴歸方程爲它的運行時間 -階乘運行時間
T(N)= N * T(N-1)+ N! + O(n^2)。
最初,我假定O((N + 1)!)= O,並且因此我解決這樣的方程(N!) -
T(N)= N! + O(n!)+ O(n^3)= O(n!)
推理甚至每次遞歸都產生了另一個n! (而不是(n-1)!,(n-2)!等),它仍然只會達到n * n! =(n + 1)! = O(n!)。最後一個參數是由於平方和。但是,在考慮了一些後,我不確定我的假設O((n + 1)!)= O(n!)是否正確,事實上,我很確定它不是正確的,噸。
如果我就在思考我做了一個錯誤的假設,我真的不知道如何真正解決上述迴歸方程,因爲對於階乘的總和沒有公式...
任何指導意見將不勝感激。
謝謝!!!
您是在測量階乘算法的時間還是這是您測量其他函數的結果? –
我編寫的函數旨在接收一個列表並輸出一個包含其所有排列的列表。它用於計算矩陣的行列式。基本上,函數遍歷列表中的每個成員(總共n個),併爲每個成員創建一個不包含該成員的子列表(O(n)),計算子列表的所有排列(T(n- 1)),然後遍歷每個這樣的排列,追加到每個被取下的數字((n-1)!)。總而言之,我得到了我之前寫的遞歸方程。行列式計算通常採用O(n!),我也在Wikipedia上看到它的提及。 – Adam
你可以忽略'O(n^2)'這個詞,因爲'n! = O(n^n)'由Sterling近似得出。 – chepner