字符串的全排列

代碼如下:

function Permutation(s, from, to) {
  if(to<=1)
    return;
  if(from == to){
    console.log(s);
  }
  else{
    for(var i=from;i<=to;i++){
      swap(s,i,from);//1
      Permutation(s,from+1,to);
      swap(s,from,i); //這一步的作用是每次交換完都復原,恢復成1的順序
    }
  }
}

function swap(s, i, j) {
  var temp = s[i];
  s[i] = s[j];
  s[j] = temp;
}
Permutation(["a","b","c"],0,2);

理解:(1)遞歸的兩個點:(1)終止條件(2)遞歸的部分
(2)遞歸是依賴棧來實現的
(3)該題主要通過交換實現全排列,直到交換的元素爲一個時,才停止,即from = to;

參考:https://segmentfault.com/a/1190000002710424

發佈了179 篇原創文章 · 獲贊 82 · 訪問量 55萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章