【发布时间】:2013-06-28 00:18:29
【问题描述】:
出于某种原因,我很难处理这个问题。我喜欢拼图,但我在这个方面做得不太好。
以下数组内部可以包含大量集合,但永远不会比您在此示例中看到的更深(即永远不会比二维更深):
var list = [['a', 'b'], ['c'], ['d', 'e']];
以上述为输入,如何在 JavaScript 中生成以下数组?
[['a', 'c', 'd'], ['a', 'c', 'e'], ['b', 'c', 'd'], ['b', 'c', 'e']]
我确定解决方案涉及递归,但它不是一个简单的树结构,所以它不像看起来那么简单。
【问题讨论】:
-
这是所有组合的列表。你需要递归。
-
是的。我尝试了递归,但它没有工作,因为它没有简单的树结构。它比看起来更复杂。
-
@sfjedi 这确实是一个应该用递归解决的问题。你只需要弄清楚归纳步骤:-)
-
我称之为“笛卡尔积”,在 js 中有很多解决这个问题的方法。
-
s/无限量/任意大量/。 (一方面,Javascript 不支持无限列表,而且我不确定即使在支持的语言中这是否可以解决。至少没有意义,因为它与获取所有元素的第一个元素的列表相同尺寸。)
标签: javascript arrays list loops recursion