Такая функция вернёт массив числа монет каждого размера, соотв. 10, 5, 2 и 1:
function getChange(num) {
const coins = [10, 5, 2, 1];
return coins.map((c) => {
const n = Math.floor(num / c);
num -= n * c;
return n;
});
}
Перепишите её циклом
while
или
for
. Тут тоже цикл: метод массива
map()
перебирает каждый его элемент, выполняя для очередного значения функцию внутри и заменяя элемент на возвращённое значение.
Берём каждый номинал монет, от большего к меньшему, и пытается в сумму сдачи упихнуть как можно больше монет очередного номинала. Сумма оставшейся к выдаче сдачи каждый раз уменьшается на выданную монетами сдачу.