2016-09-17 2 views
0

私はJavascriptを初めて使用しています.Javascriptを使用してJava文字列置換を再現しようとしていましたが、正しい結果が得られません。JavaからJavascriptへの文字列置換

注:私はここに(Hemantの答えを)このアルゴリズムに従っ:ここString permutation with recursion

が私のコードです:私はgetAllPermutations("good")を呼び出すとき

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; 
} 

、それだけで["good"]を返します。このコードはどうなっていますか?コールバックスコープについて何か不足していますか?

答えて

0

問題は、forループの変数iがグローバルに定義されていることです。したがって、各再帰では、変数は前の反復の値を保持します。
varを変数の前に書くことで、次のコードスニペットのようにローカル変数にすることで修正できます。

for(var i = 0; i < len; i++){ 
// ... 
} 
関連する問題