Есть функция для решения популярной задачи:
function bank(sum, nominals, id = 0) {
if (sum == 0) return [];
if (id < nominals.length) {
for (let i = Math.trunc(sum / nominals[id]); i >= 0; i--) {
let out = bank(sum - nominals[id] * i, nominals, id + 1);
if (out != null) {
return [i].concat(out) //либо return [i, ...out]
}
}
}
}
let n = [1100, 650, 230, 70, 20], s = 2650;
bank(s, n).forEach((v, i) => {if (v > 0) {console.log(`${v} по ${n[i]}`)}})
Как ее исправить, чтобы избавиться от
concat()
и
...
? Разрешено вводить циклы, менять количество переменных, но не применять глобальные переменные и объекты. Принцип вычисления должен остаться тем же - рекурсия в цикле.