Я пытаюсь рекурсивно генерировать все элементы в списке рекурсивно. Я видел несколько решений подобных вопросов, но мне не удалось заставить мой код работать. Может ли кто-нибудь указать, как я могу исправить свой код?
Это открыто для всех S/O'ers, а не только для Java.
(Также я должен отметить, что он аварийно завершает работу с 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);
}
}