【发布时间】:2014-06-13 17:11:18
【问题描述】:
当我用 [1,2,3,4] 调用它时,它返回未定义,我不明白为什么。目标是如果数组中的任何数字组合加起来达到数组中的最大数字,则返回 true,如果不可能,则返回 false。
function ArrayAdditionI(arr) {
var max = Math.max.apply(null, arr);
arr.splice(arr.indexOf(max), 1);
var sum = function(arr) { return arr.reduce(function(a,b) { return a + b; }); };
function combos(arr) {
var f = function(prefix, arr) {
for (var i = 0; i < arr.length; i++) {
var clone = prefix.slice(0);
clone.push(arr[i]);
if (sum(clone) == max) { return true; }
return f(clone, arr.slice(i+1));
}
}
return f([], arr);
}
return combos(arr);
}
【问题讨论】:
标签: javascript for-loop recursion combinations