Génération itérative de toutes les combinaisons à partir de plusieurs listes à l'aide de la récursion en Java
Envisagez un scénario dans lequel vous êtes confronté à un assortiment de listes, chacun possédant une longueur non divulguée. Votre tâche est de produire une liste singulière qui intègre toutes les possibilités de combinaison uniques. Pour illustrer, considérons les listes suivantes :
X: [A, B, C] Y: [W, X, Y, Z]
À partir de ces listes, vous devriez pouvoir générer 12 combinaisons :
[AW, AX, AY, AZ, BW, BX, BY, BZ, CW, CX, CY, CZ]
Si une troisième liste supplémentaire de 3 éléments était introduite, le nombre total de combinaisons passerait à 36.
Pour réaliser cette génération de combinaisons complexes, la récursivité apparaît comme un outil puissant :
<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>
Dans cet algorithme récursif méticuleusement conçu, les listes de paramètres représentent la collection de listes d'entrée, caractérisées par une quantité et une longueur indéterminées. La liste des résultats constitue le référentiel de toutes les permutations générées au cours du processus. Les paramètres profondeur et courant facilitent respectivement le parcours des listes d'entrée et la construction de combinaisons individuelles.
L'invocation ultime de cette fonction générative orchestre l'ensemble du processus :
<code class="java">generatePermutations(lists, result, 0, "");</code>
À travers le collaboration harmonieuse de la récursivité et du Java Collection Framework, cet algorithme vous permet de produire sans effort toutes les combinaisons imaginables à partir d'un ensemble de listes arbitrairement grand.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!