如果我們有這樣的代碼(僞)這個遞歸調用的時間複雜度是多少?假設以下沒有說明的東西被認爲是恆定時間。遞歸算法的時間複雜度(僞代碼)
a,b,c > 0
//some code above, then we get here
for i = 0 to a
recursive(i,b)
//code continues
FUNCTION recursive(i,b)
if b = 0
return 0
for j = i+c to a
recursive(j,b-1)
ENDFUNC
編輯 我主要是我有麻煩確定它是否是指數與否。深度顯然是b,並且在遞歸函數中調用了O(b * a),但是主循環也調用了它,使得我認爲它應該總是:O(a^2 * b),但我不太明白指數複雜度是如何產生的,所以我想知道它是否可以代替?
你在哪裏分析自己的複雜性問題?您需要計算每個函數被調用的頻率。這產生一個依賴於使用變量的數字,比如'a + 2b + c^a'或類似的東西。之後,派生一個複雜類很容易。 – Zabuza
@ikegami應該寫成b - 1. – tiggybits
假設b在遞歸函數中是局部的,所以b-1不會影響主循環中的b – tiggybits