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