【问题标题】:String permutation from Java to Javascript从 Java 到 Javascript 的字符串排列
【发布时间】:2017-01-25 22:02:35
【问题描述】:

我是 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"]。这段代码是怎么回事?我是否遗漏了有关回调范围的任何内容?

【问题讨论】:

    标签: javascript callback permutation


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-17
      • 1970-01-01
      相关资源
      最近更新 更多