编写一个打印所有组合的通用函数。没有递归[重复]

Posted

技术标签:

【中文标题】编写一个打印所有组合的通用函数。没有递归[重复]【英文标题】:Write a generalized function that prints all combinations. No recursion [duplicate] 【发布时间】:2017-10-08 09:28:22 【问题描述】:

我想打印数组中每个数字的所有可能组合,并将所有组合存储在一个数组中。

到目前为止,我只使数组变平。

我知道我需要一个将数组作为参数然后返回所有可能组合的函数。

let array = [
  [0, 1, 8],
  [2, 3],
  [4, 5]
 ];

const allPossibleCombinations = function (array) 
  const combinations = [];
        return array.reduce((p,c) =>
          [...p, ...c] );
;

console.log(allPossibleCombinations(array))

但我需要这个结果

[ '0 2 4',
  '0 2 5',
  '0 3 4',
  '0 3 5',
  '1 2 4',
  '1 2 5',
  '1 3 4',
  '1 3 5',
  '8 2 4',
  '8 2 5',
  '8 3 4',
  '8 3 5' ]

【问题讨论】:

三个嵌套的for循环怎么样? this question上有几个非递归答案... 递归有什么问题? 【参考方案1】:

可能不是最有效的解决方案,但这会产生所需的输出:

const [one, two, three] = [
  [0, 1, 8],
  [2, 3],
  [4, 5]
];
const output = [];

for (let i of one) 
   for (let j of two) 
      for (let h of three) 
         output.push([i, j, h]);
      
   


console.log(output);

【讨论】:

以上是关于编写一个打印所有组合的通用函数。没有递归[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用递归从 char 列表中打印 n 长度组合

组合和排列算法(递归)

递归与回溯:python列表组合问题

打印 C 中的递归数

如何加快递归搜索功能?

如何为通用数字编写函数?