Mengingat saya memiliki serangkaian angka misalnya [14,6,10] - Bagaimana saya bisa menemukan kemungkinan kombinasi/pasangan yang dapat menambahkan hingga nilai target yang diberikan.
misalnya saya punya [14,6,10], saya mencari nilai target 40 output yang saya harapkan adalah
10 + 10 + 6 + 14
14 + 14 + 6 + 6
10 + 10 + 10 + 10
* Urutan tidak penting
Karena itu, inilah yang saya coba sejauh ini:
function Sum(numbers, target, partial) {
var s, n, remaining;
partial = partial || [];
s = partial.reduce(function (a, b) {
return a + b;
}, 0);
if (s === target) {
console.log("%s", partial.join("+"))
}
for (var i = 0; i < numbers.length; i++) {
n = numbers[i];
remaining = numbers.slice(i + 1);
Sum(remaining, target, partial.concat([n]));
}
}
>>> Sum([14,6,10],40);
// returns nothing
>>> Sum([14,6,10],24);
// return 14+10
Sebenarnya tidak ada gunanya karena hanya akan kembali jika angka tersebut hanya dapat digunakan sekali untuk menjumlahkan.
Jadi bagaimana cara melakukannya?