替代执行排列

时间:2016-05-10 15:55:31

标签: javascript recursion permutation

我目前正在尝试查找字符串的各种排列。使用的代码适用于包含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", []);

我可以改变什么来避免这种情况?还有更好的方法吗?

0 个答案:

没有答案