Javascript硬币更改/更改制作算法

PWL*_*PWL 1 javascript algorithm

所以我一直在尝试用Javascript/jQuery创建一个程序,将一定数量的钱分成最小的美元账单.到目前为止,该程序仅适用于一个账单,我不太确定如何实现其余的,并且需要在这里推进正确的方向.

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.";
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我运行money = 89;它将返回100,因为这是最接近的可以支付89美元的账单,但我希望它返回50 + 20 + 20所以它将适用money = *anything*.

编辑:评论后我现在到目前为止:

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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

tae*_*esu 6

var bills = [5, 10, 20, 50, 100];
var money = mod(89);

function mod(num){
    if (num % 5 === 0){
        return num;
    }else{
        return num + 5 - num % 5
    }
}

function foo(num){
    var index = bills.length - 1;
    var splits = [];
    while (money >= bills[0]){
        if (money >= bills[index]){
           money -= bills[index];
           splits.push(bills[index]);
        }else{
            index--;
        }
    }
    return splits;
}

console.log(foo(money));
Run Code Online (Sandbox Code Playgroud)

编辑过的jsfiddle