javascript - 排列的递归列表

标签 javascript arrays recursion

我想通过递归来解决一个问题。我有一个给定的字母列表,我想要这些字母的所有排列,直到达到给定的长度。

var letters= ["A", "B", "C", "D", "E", "F"];  
function myRekursion(alphabet, n){  
    if(n > 0){
        for(var i = 0; i < letters.length; i++){
            document.write(letters[i]);
            myRekursion(letters, n - 1);
        }
        document.write(",<br>");
    }
}
myRekursion(letters,3);

我不明白为什么我一直浏览完整列表而不是创建一个列表,例如:AAA,AAB,AAC,...,FFF

你有什么解决方案吗?

最佳答案

这称为笛卡尔积

您可以使用 ES6 功能来实现此目的:reducemap 方法。

In set theory (and, usually, in other parts of mathematics), a Cartesian product is a mathematical operation that returns a set from multiple sets.

function cartesianProduct(array ,n) {
  arrayToWork = [];
  for(i = 0;i < n;i++)
    arrayToWork.push(array);
  return arrayToWork.reduce((a, b) =>
    a.map(x => b.map(y => x.concat(y)))
    .reduce((a, b) => a.concat(b), []), [[]]);
}
console.log(cartesianProduct(['A','B','C','D','E','F'],3));

关于javascript - 排列的递归列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48165768/

相关文章:

algorithm - 使用递归的字符串排列

c++ - 一个接受矩阵并输出到 "exit"的最快路径以及到达那里所需的数字的程序

javascript - 链接未添加到所有图像之前

c# - 如何在移动浏览器中使用 window.onscroll

javascript - 如何将函数移到 Gruntfile.js 之外?

Java:将字符串转换为字节数组,然后转换为长值,反之亦然

c - C中的数组反向输出

arrays - 傀儡排序是如何工作的?

javascript - css控制div内背景图片的位置

c++ - 尝试做一个简单的递归练习