リスト内のすべてのアイテムを再帰的に再帰的に生成しようとしています。これと同様の質問に対するいくつかの解決策を見てきましたが、コードを機能させることができませんでした。誰かが私のコードを修正する方法を指摘できますか?
これは、Java 関係者だけでなく、すべての S/O'er に開かれています。
(また、SO例外でクラッシュすることに注意してください)。
サンプル入力:
[1, 2, 3]
出力:
[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);
}
}