求二维数组全排列为什么一直不能返回正确结果呢呢?

作者站长头像
站长
· 阅读数 9

题目描述

输入[[A, B], [a, b], [1, 2]]输出[Aa1, Aa2, Ab1, Ab2, Ba1, Ba2, Bb1, Bb2]

相关代码

const arr = [
  ["1", "2", "3"],
  ["a", "b", "c"],
  ["A", "B", "C"],
];

function merge(a, b) {
  const result = [];
  b.forEach((e) => {
    a.forEach((el) => {
      result.push(e + el);
    });
  });
  return result;
}

function permutation(arr) {
  if (arr.length <= 1) {
    const result = arr.pop()
    console.log(result);
    // return result;
    return '123'
  } else {
    const lastMerge = merge(arr.pop(), arr.pop());
    permutation([...arr, lastMerge]);
  }
}

const result = permutation(arr);
console.log('result:',result)

求二维数组全排列为什么一直不能返回正确结果呢呢?

执行结果如上,为什么return 都是 undefined呢,很困惑,求高人指教,亦可优化该程式,🙇‍🙇‍🙇‍
回复
1个回答
avatar
test
2024-07-01
function permutation(arr) {
  if (arr.length <= 1) {
    return arr.pop();
  } else {
    const lastMerge = merge(arr.pop(), arr.pop());
    return permutation([...arr, lastMerge]);
  }
}
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容