我们需要编写一个JavaScript函数,该函数将数字数组作为第一个参数,并将单个数字作为第二个参数。
该函数应该从数组中挑选出这样的元素,当添加元素时,该元素将给出数组第二个参数指定的总和。该函数应返回一个包含所有此类数字子数组的数组,这些子数组相加后将得出所需的总和。
请注意,顺序并不重要,如果需要,我们可以自由使用一个以上的数字来产生总和。
例如-
如果输入数组和总和为-
const arr = [14, 6, 10]; const sum = 40;
那么输出应该是-
const output = [ [ 14, 14, 6, 6 ], [ 14, 6, 10, 10 ], [ 6, 6, 6, 6, 6, 10 ], [ 10, 10, 10, 10 ] ];
const arr = [14, 6, 10]; const sum = 40; const findSum = (arr, sum) => { const res = []; const search = (index, part = []) => { const s = part.reduce((a, b) => a + b, 0); if (s === sum){ res.push(part) }; if (s >= sum || index >= arr.length){ return; }; search(index, part.concat(arr[index])); search(index + 1, part); }; search(0); return res; } console.log(findSum(arr, sum));
输出结果
这将产生以下输出-
[ [ 14, 14, 6, 6 ], [ 14, 6, 10, 10 ], [ 6, 6, 6, 6, 6, 10 ], [ 10, 10, 10, 10 ] ]