被调用的函数拒绝返回true

时间:2013-08-29 17:11:54

标签: javascript

即使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])

1 个答案:

答案 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])
相关问题