[英]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中缺少什么嗎?
您的問題output
在recPerm
函數私有的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.