
无限循环 + 当前轮的局部最优解
应用
找零问题:
/*** 找零* @param {*} money 需要找的钱* @param {*} arr 现有零钱面额合集*/function exchange(money, arr) {let rst = [],len = arr.lengthwhile (money > 0) {let max = 0 // 或者可以等于 -Infinity// 找到本轮最大的可用面额for (let i = 0; i < len; i++) {if(arr[i] > max && arr[i] <= money) { // 这里注意判断条件,可以等于money,寻找最优解的条件必须正确max = arr[i]}}rst.push(max) // 把当前轮的最优解记录进去money -= max}return rst}let rst = exchange(46, [100, 25, 10, 5, 1])console.log(rst);
