O(n) 時間只是一個回圈,O(n2) 是回圈內的一個回圈,其中兩個回圈都運行kn次(k 是整數)。模式仍在繼續。但是,O(n?) 的所有有限整數 k 都可以手動構造,您可以簡單地將回圈嵌套在另一個回圈中,但是 O(n?) 呢,其中 n 是接近無窮大的任意值?
我在想一個while回圈可以在這里作業,但是我們如何設定一個中斷條件。此外,我相信 O(n?) 復雜度可以使用遞回來實作,但是在偽代碼方面看起來如何呢?
你如何構造一個僅使用回圈或遞回在 O(n?) 中運行的演算法?
uj5u.com熱心網友回復:
一個非常簡單的迭代解決方案是計算 n n然后計數:
total = 1
for i in range(n):
total *= n
for i in range(total):
# Do something that does O(1) work
這可以很容易地遞回重寫:
def calc_nn(n, k):
if k == 0:
return 1
return n * calc_nn(n, k - 1)
def count_to(k):
if k != 0:
count_to(k - 1)
def recursive_version(n):
count_to(calc_nn(n, n))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/411532.html
標籤:
