我正在准备面试,并正在尝试使用 javascript 进行排列的堆算法。所以当我尝试打印到控制台时代码工作正常。
function per(a, size){
if(size === 1){
console.log(a);
}
for(let i = 0; i < size; i++){
per(a, size-1;
if(size % 2 === 1){
let temp = a[0];
a[0] = a[size - 1];
a[size - 1] = temp;
}else{
let temp = a[i];
a[0] = a[size -1];
a[size - 1] = temp;
}
}
}
let a = [1,2,3];
per(a, a.length,count);
console.log(count);
但是当我尝试将结果放入数组时它不起作用。
function per(a, size){
if(size === 1){
count.push(a);
}
for(let i = 0; i < size; i++){
per(a, size-1);
if(size % 2 === 1){
let temp = a[0];
a[0] = a[size - 1];
a[size - 1] = temp;
}else{
let temp = a[i];
a[0] = a[size -1];
a[size - 1] = temp;
}
}
}
let count = [];
let a = [1,2,3];
per(a, a.length,count);
console.log(count);
它打印这个:
[
[ 3, 1, 1 ],
[ 3, 1, 1 ],
[ 3, 1, 1 ],
[ 3, 1, 1 ],
[ 3, 1, 1 ],
[ 3, 1, 1 ]
]