从Java到Javascript的字符串排列

时间:2016-09-17 22:45:10

标签: javascript callback permutation

我是Javascript的新手,我试图使用Javascript重现Java字符串排列,但我无法得到正确的结果。

注意:我在这里遵循了这个算法(Hemant的回答):String permutation with recursion

这是我的代码:

function getAllPermutations(input){
  var permutations = [];

  function loop(prefix, input){

      var len = input.length;

      if(len==0) {
          permutations.push(prefix);
       }
      else{
      for(i = 0; i < len; i++){
        loop(prefix + input.charAt(i),input.substr(0,i) + input.substr(i+1,len));
       }
      }
     }

  loop("", input);

  return permutations;
}

当我致电getAllPermutations("good")时,它只返回["good"]。这段代码发生了什么?我错过了关于回拨范围的任何内容吗?

1 个答案:

答案 0 :(得分:0)

问题是i循环中的变量for是全局定义的。因此,在每次递归中,变量保留前一次迭代的值 可以通过在变量前写var来修复它,使其成为局部变量,如下面的代码片段所示。

for(var i = 0; i < len; i++){
// ...
}