Разбираемся с рекурсиейБазовый случай

Банкомат

Реализуйте класс ATM, реализущий логику работы банкомата.

У класса необходимо реализовать два метода:

  • deposit — принимает номинал купюры и количество купюр, заправляемых в банкомат, возвращает this, чтобы было возможно вызывать метод по цепочке.
  • withdraw — принимает запрашиваемую сумму amount и возвращает объект с информацией о том, сколько каких купюр нужно выдать. Если это невозможно, необходимо бросить ошибку.

Требуется, чтобы запрашиваемая сумма выдавалась минимаьным количеством купюр.

После снятия суммы количество купюр в банкомате уменьшается. Номиналы купюр — любые положительные целые числа.

const atm = new ATM() .deposit(1000, 5) .deposit(500, 4) .deposit(200, 3) .deposit(50, 2) .deposit(10, 1); console.log(atm.withdraw(1550)); // { 1000: 1, 500: 1, 50: 1 } console.log(atm.withdraw(600)); // { 200: 3 }

ATM — это automated teller machine (автоматический кассовый аппарат).

Эта задача встречается на собеседованиях