-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