/**
* Created by LR on 2016/12/7.
*/
function permutate(str) {
var result = [];
if(str.length == 1){
return [str]
}else {
var preResult = permutate(str.slice(1))
for (var j = 0; j < preResult.length; j++) {
console.log(preResult[j])
for (var k = 0; k < preResult[j].length+1; k++) {
var temp=preResult[j].slice(0,k)+str[0]+preResult[j].slice(k);
result.push(temp);
}
}
console.log("!")
console.log(result)
return result
}
}
permutate('abc');
第一次是abc 进入函数,然后长度大于1进入else;
所以这里就应该是
var preResult = permutate("bc")
之后呢??我就想到bc进入函数,长度大于一
之后就 var preResult = permutate("c")
长度等于1了 然后就返回一个c 这个for循环是怎么执行的?? 谁能告诉我一下。。。
这个是全排列的算法
相关分类