let arr = [30, 50, 100]; function maxQ(arr, n) { let rArr = arr.map(v => { if (n < v) return 0; return maxQ(arr, n - v) + v }); return Math.max(...rArr); } console.log(maxQ(arr, 20, 0)) console.log(maxQ(arr, 30, 0)) console.log(maxQ(arr, 40, 0)) console.log(maxQ(arr, 50, 0)) console.log(maxQ(arr, 60, 0)) console.log(maxQ(arr, 70, 0)) console.log(maxQ(arr, 80, 0)) console.log(maxQ(arr, 90, 0))