数组排列组合
求集合单词组合起来的不同结果,集合中的单词不重复,每个结果包含所有单词,给定一个 包含单词的数组,求排列组合
function permute(arr) { if (arr.length === 0) { return [[]]; } let result = []; for (let i = 0; i < arr.length; i++) { let rest = [...arr.slice(0, i), ...arr.slice(i + 1)]; // 取出剩下元素排列组合 let subResult = permute(rest); for (let j = 0; j < subResult.length; j++) { result.push([arr[i], ...subResult[j]]); } } return result.map(item => item.join('')) } const arr = ['foo','bar','hello','world'] permute(arr)
通过递归的方式 获取 所有的排列情况,每个循环都取一个元素作为首位,剩下的元素排列组合,剩下的元素重复这个逻辑。实现了阶乘的逻辑。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
更多
发布评论