Javascript 具有显示字符串子集的函数-正在尝试调整代码以处理数组

Javascript 具有显示字符串子集的函数-正在尝试调整代码以处理数组,javascript,recursion,subset,Javascript,Recursion,Subset,一些工作代码在底部。但是我上面的代码适应不良,进入了一个无限递归循环。 什么是我不知道的阵列 function recSubsets(soFar, rest) { if (rest===[]) console.log(soFar); else { recSubsets(soFar.push(rest[0])), rest.slice(1)); recSubsets(soFar, rest.slice(1)); } } fu

一些工作代码在底部。但是我上面的代码适应不良,进入了一个无限递归循环。 什么是我不知道的阵列

function recSubsets(soFar, rest)
{
    if (rest===[]) console.log(soFar);

    else
    {
        recSubsets(soFar.push(rest[0])), rest.slice(1));
        recSubsets(soFar, rest.slice(1));
    }
}  


function listSubsets(s)
{
    recSubsets([],s);
}

listSubsets([4,9,3,77])
下面是字符串的工作版本

function recSubsets(soFar, rest)
{
    if (rest==="") console.log(soFar);

    else
    {
        recSubsets(soFar+rest[0], rest.substring(1));
        recSubsets(soFar, rest.substring(1));
    }
}  


function listSubsets(s)
{
    recSubsets("",s);
}

listSubsets("cat")
给我:

猫 ca 计算机断层扫描 C 在 A.
我发现了两个问题-

  • push不返回数组(返回数组的新长度)
  • 你的停车条件不起作用。相反,检查长度===0有效

    function recSubsets(soFar, rest)
    {
        if (rest.length===0) console.log(soFar);
    
        else
        {
            var newSoFar = soFar.slice();
            newSoFar.push(rest[0]);
            recSubsets(newSoFar, rest.slice(1));
            recSubsets(soFar, rest.slice(1));
        }
    }  
    
    
    function listSubsets(s)
    {
        recSubsets([],s);
    }
    
    listSubsets([4,9,3,77])
    

  • 你能给我们看一下你期望的示例输入的输出吗?我把它添加到了底部。。。我的函数似乎不是将数组当作数组来处理。我不明白为什么不可以。我只是在摆弄着创建一个版本的“newSoFar”,但如果(rest==[])是错误的,我绝对不会想到。谢谢