我正在努力理解这个功能背后的逻辑:
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');
此函数返回传递的数组的排列。它正在工作,但我真的不知道它是如何工作的。如果只有一次推送调用,结果数组的排列结果究竟如何呢?另外,烫发功能被称为4次或更少?我只是想了解这件事的逻辑。交换功能是不言自明的。我只是在perm函数的else语句中遇到问题。
提前致谢..