Итак, я пытался создать программу в Javascript/jQuery, которая разбивает сумму денег на минимальную сумму долларовых купюр. Пока программа работает только с одним счетом, и я не слишком уверен в том, как реализовать остальное и нуждаюсь в толчке в правильном направлении.Javascript Изменение монеты/алгоритм изменения
var bills = [5, 10, 20, 50, 100];
while(money > 0){ // Keep deviding
for(var i=0; i < bills.length; i++){
if(money < bills[i])
return "You need a $" + bills[i] + " bill to pay for your item.";
}
}
Если я запускаю это с money = 89;
он будет возвращать 100, потому что это самый близкий счет, который может заплатить за $ 89, но я хочу, чтобы вернуть 50 + 20 + 20, так что будет работать с money = *anything*
.
EDIT: После комментариев, которые я в настоящее время так далеко:
while(money > 0){ // Keep deviding
for(var i=bills.length-1; i >= 0; i--){
if(money > bills[i] || i == 0){
stringToReturn += " + $" + bills[i];
money -= bills[i];
break;
}
}
}
Я думаю, вам нужно использовать модульное подразделение: http://en.wikipedia.org/wiki/Modulo_operation. –
Мотивация будет заключаться в том, чтобы ... получить наибольшую сумму сначала, если она не подходит, перейдите к следующей наибольшей сумме и продолжайте заполнять список изменений. – taesu
Это хорошая идея @taesu, однако, когда я сделал цикл назад, теперь он возвращает «$ 50 + $ 20 + $ 20 + $ 5 + $ 5', а не $ 100, если входной код 99. Обновит мой пост с моим текущим кодом. – Phil