龙空技术网

碎片时间学编程「65]:生成数组元素的所有排列(包含重复项)

路条编程 84

前言:

如今兄弟们对“递归实现数组全排列”都比较着重,小伙伴们都想要知道一些“递归实现数组全排列”的相关内容。那么小编在网络上搜集了一些关于“递归实现数组全排列””的相关知识,希望小伙伴们能喜欢,姐妹们快快来学习一下吧!

编辑切换为居中

添加图片注释,不超过 140 字(可选)

使用递归。对于给定数组中的每个元素,为其其余元素创建所有部分排列。使用Array.prototype.map()方法将元素与每个部分排列组合,然后使用Array.prototype.reduce()方法将所有排列组合到一个数组中。使Array.prototype.length等于21⚠️警告:这个函数的执行时间随着每个数组元素呈指数增长。任何超过 8 到 10 个条目都可能导致您的浏览器在尝试解决所有不同组合时挂起。

JavaScript

const permutations = arr => {  if (arr.length <= 2) return arr.length === 2 ? [arr, [arr[1], arr[0]]] : arr;  return arr.reduce(    (acc, item, i) =>      acc.concat(        permutations([...arr.slice(0, i), ...arr.slice(i + 1)]).map(val => [          item,          ...val,        ])      ),    []  );};

更多内容请访问我的网站:

标签: #递归实现数组全排列