即使sum ===在subset()中最大,我在控制台中也没有得到“true”。真的只发送回调用函数?那么如何让“返回真实”表现为新手所期望的呢?
function ArrayAdditionI(arr)
{
arr.sort();
var largest = arr.pop()
subset([], arr, largest);
}
function subset(soFar, rest, largest)
{
var sum = 0;
if (rest.length === 0)
{
for(var i=0; i<soFar.length; i++)
{
sum+= soFar[i];
}
if (sum === largest)
{
return true;
}
}
else
{
var soFar2 = soFar.slice(0);
soFar2.push(rest[0]);
subset(soFar,rest.slice(1),largest);
subset(soFar2, rest.slice(1),largest);
}
}
ArrayAdditionI([85,3,88,2])
答案 0 :(得分:1)
function ArrayAdditionI(arr)
{
arr.sort();
var largest = arr.pop()
var ret = subset([], arr, largest);
// do something with ret
}
function subset(soFar, rest, largest)
{
var sum = 0;
if (rest.length === 0)
{
for(var i=0; i<soFar.length; i++)
{
sum+= soFar[i];
}
if (sum === largest)
{
return true;
}
}
else
{
var soFar2 = soFar.slice(0);
soFar2.push(rest[0]);
subset(soFar,rest.slice(1),largest);
subset(soFar2, rest.slice(1),largest);
}
return false;
}
ArrayAdditionI([85,3,88,2])