J'essaie de générer récursivement tous les éléments d'une liste. J'ai vu quelques solutions à des questions similaires à celle-ci, mais je n'ai pas réussi à faire fonctionner mon code. Quelqu'un pourrait-il m'indiquer comment corriger mon code ?
C'est ouvert à tous les S/O'ers, pas seulement aux Java.
(Je dois également noter qu'il se bloque avec une exception SO).
Entrée de l'échantillon :
[1, 2, 3]
Sortie :
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 1, 2]
[3, 2, 1]
//allPossibleItems is an AL of all items
//this is called with generatePerm(null, new ArrayList<Item>);
private void generatePerm(Item i, ArrayList<Item> a) {
if (i != null) { a.add(i); }
if (a.size() == DESIRED_SIZE) {
permutations.add(a);
return;
}
for (int j = 0; j < allPossibleItems.size(); j++) {
if (allPossibleItems.get(j) != i)
generatePerm(allPossibleItems.get(j), a);
}
}