Java での再帰を使用した複数のリストからのすべての組み合わせの反復生成
さまざまなリストに直面するシナリオを想像してください。それぞれの長さは非公開です。あなたの仕事は、すべての一意の組み合わせの可能性を組み込んだ単一のリストを作成することです。例として、次のリストを考えてみましょう:
X: [A, B, C] Y: [W, X, Y, Z]
これらのリストから、12 個の組み合わせを生成できるはずです:
[AW, AX, AY, AZ, BW, BX, BY, BZ, CW, CX, CY, CZ]
3 つの要素からなる追加の 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>
この細心の注意を払って作成された再帰アルゴリズムでは、パラメーター リストは次のことを表します。不定の量と長さを特徴とする入力リストのコレクション。結果リストは、プロセス中に生成されたすべての順列のリポジトリとして機能します。パラメータ Depth と current は、それぞれ入力リストの走査と個々の組み合わせの構築を容易にします。
この生成関数の最終的な呼び出しは、プロセス全体を調整します。
<code class="java">generatePermutations(lists, result, 0, "");</code>
再帰と Java Collection Framework の調和のとれたコラボレーションにより、このアルゴリズムにより、任意の大規模なリストの集合から考えられるすべての組み合わせを簡単に生成できるようになります。
以上がJava で再帰を使用して、長さが不明な複数のリストから可能なすべての組み合わせを生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。