【发布时间】:2015-02-03 14:01:32
【问题描述】:
我正在解决 Coderbyte 的数组添加问题:
使用 JavaScript 语言,让函数
ArrayAdditionI(arr)获取存储在arr中的数字数组,如果数组中的任何数字组合可以相加等于数组中的最大数字,则返回字符串 true,否则返回字符串 false。例如:如果arr包含[4, 6, 23, 10, 1, 3],则输出应返回true,因为4 + 6 + 10 + 3 = 23。该数组不会为空,不会包含所有相同的元素,并且可能包含负数。
我想出了下面的解决方案,但由于某种原因,无法使递归工作。该代码正确识别了剩余(非最大)数组元素恰好加起来最大的数组,否则失败。有什么建议吗?
function ArrayAdditionI(arr) {
arr = arr.sort(function(a,b) {return b-a});
match = false;
largest = arr.shift(arr[0]);
function test(a){
if(eval(a.join("+"))==largest){
match = true;
return match}
else {
for(i = 0; i < a.length; i++){
newArr = a.slice();
newArr.splice(i,1);
return test(newArr);
}
}
}
test(arr);
return match;
}
【问题讨论】:
标签: javascript arrays