function GetCombinationsEqualToN(arr, N, combination) {
let sum = 0;
for (const num of combination) {
sum += num;
}
if (sum == N) {
console.log("sum(" + combination.join(" ").toString() + ") = " + N);
}
if (sum >= N) {
return;
}
for (let i = 0; i < arr.length; i++) {
let remaining = [];
for (let j = i + 1; j < arr.length; j++) {
remaining.push(arr[j]);
}
let combination_next = Array.from(combination);
combination_next.push(arr[i]);
GetCombinationsEqualToN(remaining, N, combination_next);
}
}
const arr = [4, 6, 8, 2, 1, 10, 3, 5, 13];
const N = 13;
GetCombinationsEqualToN(arr, N, []);
/*
run:
"sum(4 6 2 1) = 13"
"sum(4 6 3) = 13"
"sum(4 8 1) = 13"
"sum(4 1 3 5) = 13"
"sum(6 2 5) = 13"
"sum(8 2 3) = 13"
"sum(8 5) = 13"
"sum(2 1 10) = 13"
"sum(10 3) = 13"
"sum(13) = 13"
*/