@OlgaParshina

Как перевести из функции в цикл?

Пишу проект кофемашины. Помогите, пожалуйста, перезаписать данный код для расчета сдачи в монетках из функции в цикл с помощью while и for и выводом в console.log Например если 50р - сдача 10рублей по 5.
function oldgetChange(num) {
                    if (num >= 10) {
                        console.log(10);
                        getChange(num - 10);
                    } else if (num >= 5) {
                        console.log(5);
                        getChange(num - 5);
                    } else if (num >= 2) {
                        console.log(2);
                        getChange(num - 2);
                    } else if (num >= 1) {
                        console.log(1);
                        getChange(num - 1);
                    } else {
                        console.log("Вся сдача выдана!");
                    }
                }
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Такая функция вернёт массив числа монет каждого размера, соотв. 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() перебирает каждый его элемент, выполняя для очередного значения функцию внутри и заменяя элемент на возвращённое значение.

Берём каждый номинал монет, от большего к меньшему, и пытается в сумму сдачи упихнуть как можно больше монет очередного номинала. Сумма оставшейся к выдаче сдачи каждый раз уменьшается на выданную монетами сдачу.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы