Вы должны добавить return coins;
в методе и из change
, но вы можете оставить его как есть.Возврат и изменение массива - это запах кода, поскольку метод работает с объектом (изменяет его) и возвращает результат.
Чтобы заставить его работать, вы можете определить свой метод denomination
следующим образом:
public static List<Integer> denominations(int amount) {
List<Integer> result = new ArrayList<Integer>();
change(amount, result, 0);
return result;
}
Редактировать:
Список пуст, поскольку единственное место, где он был изменен, это:
coins.add(DENOMINATIONS[pos]);
change(remaining - DENOMINATIONS[pos], coins, pos);
coins.remove(coins.size() - 1);
Где элемент добавляется и удаляется.То, что вы написали, делает его пустым:)
Edit2:
Я бы предложил обойти вокруг второго объекта, который будет копией списка, который вы хотели бы вернуть, и немодифицировано.