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

新手上路,请多包涵

题目描述

输入[[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)

image.png

执行结果如上,为什么return 都是 undefined呢,很困惑,求高人指教,亦可优化该程式,🙇‍🙇‍🙇‍
阅读 1.7k
1 个回答
function permutation(arr) {
  if (arr.length <= 1) {
    return arr.pop();
  } else {
    const lastMerge = merge(arr.pop(), arr.pop());
    return permutation([...arr, lastMerge]);
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题