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