簡體   English   中英

遞歸解決方案:字符串排列。 無法在JavaScript中返回排列字符串數組

[英]Recursive solution : string permutation. Unable to return array of permutation strings in javascript

這是我的js:-

function recPerm(rest, soFar) { 
    var next;
    var remaining;
    var output=[];
    if (rest === '') {
        console.log(soFar); //outputting strings..and this works
        output.push(soFar); 
    } else {

        for (var i = 0; i < rest.length; i++) {
            remaining = rest.substr(0,i) + rest.substr(i+1,rest.length-1);
            next = soFar + rest[i];
            recPerm(remaining, next);
        }

    }
    return output; //returns an empty array in the end
}

var out=recPerm('abc',''); 
console.log(out);  //prints empty array

遞歸地,我試圖打印輸入字符串的排列。 我傳遞了輸入字符串和一個空白字符串,然后遞歸地調用了此函數,並使用剩下的字符串和要考慮的字符串中的下一個單獨字符。 在基本情況下,我能夠成功記錄單個字符串。 但是某種程度上,它並沒有將其保存到我的數組中。 我的JS中缺少什么嗎?

您的問題outputrecPerm函數私有的output變量上,並且當您遞歸調用recPerm ,當然會重新創建它。我建議您將該變量作為參數傳遞:

 function recPerm(rest, soFar, output) { var next; var remaining; output = Array.isArray(output) ? output : []; if(rest === '') { output.push(soFar); } else { for (var i = 0; i < rest.length; i++) { remaining = rest.substr(0,i) + rest.substr(i+1,rest.length-1); next = soFar + rest[i]; recPerm(remaining, next, output); } } return output; //returns an empty array in the end } var out=recPerm('abc',''); console.log(out); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM