-1
我有這個遞歸函數。我想知道這個算法的時間複雜度。這個想法給出了一個數字,我們必須找到所有的總結爲給定數這個遞歸函數的時間複雜度
public void getSequences(int n, ArrayList<Integer> buffer, int sum) {
if(sum == n) {
for(int j=0; j<buffer.size(); j++) {
System.out.print(buffer.get(j) + " ");
}
System.out.println("");
}
for(int i=1; i<n; i++) {
sum += i;
if(sum > n) {
break;
}
buffer.add(i);
getSequences(n, buffer, sum);
sum -= i;
buffer.remove(i);
}
}
ArrayList<Integer> buffer = new ArrayList<Integer>();
getSequences(3, buffer, 0);
// Output
// 1 1 1
// 1 2
// 2 1
這是什麼算法的時間複雜度的子集?
複雜度爲O(k),其中k - 此類子集的數量 – Herokiller 2014-10-22 02:50:17
'buffer.remove(i);'不正確並導致IndexOutOfBoundsException異常。我相信你的意思是'buffer.remove(buffer.size() - 1);'但是我試圖做的編輯被拒絕了,因爲沒有「維護海報的原意」。 – Nate 2014-10-22 13:45:33