代碼如下:
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;