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))