У меня есть рекурсивная функция, которая выводит все вариации суммы числа
public static void genAll(int k, List<Integer> arr, Consumer<List<Integer>> rere) {
if (k > 0) {
for (int i = k - 1; i >= 0; i--) {
List<Integer> arr1 = new ArrayList<>(arr);
arr1.add(k - i);
genAll(i, arr1, rere);
}
}
if (k == 0 && arr.size() != 1) {
Collections.sort(arr);
System.out.println(arr);;
}
}
В итоге выводятся массивы, сумма чисел которых равна K, и они повторяются.
Проблема заключается в том, что когда я изменил конструкции для более правильного решения, почему-то функция перестала работать исправно и начала выводить неправильные ответы
public static void genAll(int k, List<Integer> arr, Consumer<List<Integer>> rere) {
if (k > 0) {
for (int i = k - 1; i >= 0; i--) {
List<Integer> arr1 = new ArrayList<>(arr);
arr.add(k - i);
genAll(i, arr, rere);
arr.remove(arr.size() - 1);
// List<Integer> arr1 = new ArrayList<>(arr);
// arr1.add(k - i);
// genAll(i, arr1 , rere);
}
}
if (k == 0 && arr.size() != 1) {
Collections.sort(arr);
System.out.println(arr);;
}
}