0

この関数の背後にあるロジックを理解しようとしています:

 function permAlone(str) {

  arr = str.split("");

  result = [];

  perm(arr, arr.length);
  return result;

  function perm(string, length){
    if (length == 1){
      result.push(string.join(""));
    }

    else {
      for (var i=0; i < length; i++){
       perm(string, length-1);

        if(length % 2 == 0){
         swap(string, i, length-1); 
         }

        else{
         swap(string, 0, length-1);
        }
      }


    }
  }

  function swap(array, first, second){
    var temp = array[first];
    array[first] = array[second];
    array[second] = temp;
  }
}

permAlone('aab');

この関数は、渡された配列の順列を返します。それは機能していますが、私はそれがどのように機能するのか本当にわかりません。プッシュ呼び出しが 1 つしかない場合、結果配列にはどのくらい正確に順列がありますか? また、perm 関数の呼び出し回数は 4 回以下ですか? このことの論理を理解したいだけです。スワップ機能は自明です。perm関数のelseステートメントに問題があります。

前もって感謝します..

4

0 に答える 0