У меня есть эта рекурсивная функция. Я хочу знать временную сложность этого алгоритма. Идея дается ряд, мы должны найти все подмножества, что сумма в поддавки числаСложность времени этой рекурсивной функции
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
'buffer.remove (i);' неверно и вызывает 'IndexOutOfBoundsException'. Я уверен, что вы имели в виду 'buffer.remove (buffer.size() - 1);' но редактирование, которое я пытался сделать, было отклонено за то, что он не поддерживал первоначальное намерение плаката. – Nate