使用 Java 中的递归从多个列表中迭代生成所有组合
设想一个场景,您遇到各种各样的列表,每个都有一个未公开的长度。您的任务是生成一个包含所有独特组合可能性的单一列表。为了说明这一点,请考虑以下列表:
X: [A, B, C] Y: [W, X, Y, Z]
从这些列表中,您应该能够生成 12 种组合:
[AW, AX, AY, AZ, BW, BX, BY, BZ, CW, CX, CY, CZ]
如果引入了额外的包含 3 个元素的第三个列表,组合总数将扩展到 36 个。
为了实现这种复杂的组合生成,递归成为一种强大的工具:
<code class="java">void generatePermutations(List<List<Character>> lists, List<String> result, int depth, String current) { if (depth == lists.size()) { result.add(current); return; } for (int i = 0; i < lists.get(depth).size(); i++) { generatePermutations(lists, result, depth + 1, current + lists.get(depth).get(i)); } }</code>
在这个精心设计的递归算法中,参数列表代表输入列表的集合,其特征是数量和长度不确定。结果列表作为过程中生成的所有排列的存储库。参数深度和电流分别促进输入列表的遍历和单个组合的构造。
此生成函数的最终调用协调整个过程:
<code class="java">generatePermutations(lists, result, 0, "");</code>
通过递归和 Java 集合框架的和谐协作,该算法使您能够毫不费力地从任意大的列表集合中生成每种可以想象的组合。
以上是如何使用 Java 中的递归从多个未知长度的列表中生成所有可能的组合?的详细内容。更多信息请关注PHP中文网其他相关文章!