Alle möglichen Permutationen einer Liste rekursiv generieren

Ich versuche, alle Elemente in einer Liste rekursiv zu generieren. Ich habe einige Lösungen für ähnliche Fragen gesehen, aber ich konnte meinen Code nicht zum Laufen bringen. Könnte jemand darauf hinweisen, wie ich meinen Code reparieren kann?

Dies steht allen S / O'ers offen, nicht nur Java-Leuten.

(Auch sollte ich beachten, dass es mit einer SO-Ausnahme abstürzt).

Beispieleingabe: [1, 2, 3]

Ausgabe: [1, 2, 3] [1, 3, 2] [2, 1, 3] [2, 3, 1] [3, 1, 2] [3, 2, 1]

<code>//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);
      }
  }
</code>

Antworten auf die Frage(4)

Ihre Antwort auf die Frage