-1
我已经在JavaScript中实现了Heap的非递归算法。 当检查排列与console.log(arr)
一切都按预期工作。 但是当我尝试将每个排列推送到一个结果数组时,然后所有东西都打散了。它只是返回填充最后一次迭代排列的结果。 Javascript堆的算法(非递归)
function generate(n, arr) {
\t function swap(item1, item2){
\t \t console.log(item1, item2);
\t \t let tmp = arr[item1];
\t \t arr[item1] = arr[item2];
\t \t arr[item2] = tmp;
\t }
\t var c = [];
\t var allPermutations = [];
\t
\t for (let i = 0; i < n; i++) {
\t \t c[i] = 0;
\t }
\t
\t console.log(arr);
\t allPermutations.push(arr);
\t
\t for (let i = 1; i < n; i) {
\t \t if (c[i] < i) {
\t \t \t if (i % 2 == 0) {
\t \t \t \t swap(0, i);
\t \t \t } else {
\t \t \t \t swap(c[i], i);
\t \t \t }
\t \t \t
\t \t \t console.log(arr);
\t \t \t allPermutations.push(arr);
\t \t \t
\t \t \t c[i] += 1;
\t \t \t i = 1;
\t \t } else {
\t \t \t c[i] = 0;
\t \t \t i += 1;
\t \t }
\t }
\t
\t return allPermutations;
}
console.log('result', generate(3, ["a", "a", "b"]));
您必须阅读[问]并修复您的文章! – Amit
你不会费心去削减代码。我不能打扰遵循链接 –
@EdHeal是静态输出比repl更好... –