我目前正在尝试查找字符串的各种排列。使用的代码适用于包含5个字符的字符串。但是超过5时,它会抛出一个错误 - “递归过多”。
function doPerm(str, arr) {
if (typeof (str) == 'string')
str = str.split('');
if (str.length === 0){
if(allowedPerm(arr.join('')))
permutations.push(arr.join(''));
}
for (var i = 0; i < str.length; i++) {
var x = str.splice(i, 1);
//console.log(i+"--"+str);
arr.push(x);
doPerm(str, arr);
arr.pop();
str.splice(i, 0, x);
}
}
//doPerm("abcde", []);//works returns 120
doPerm("abcdefa", []);
我可以改变什么来避免这种情况?还有更好的方法吗?