Генерация всех возможных перестановок списка рекурсивно

Я пытаюсь рекурсивно генерировать все элементы в списке рекурсивно. Я видел несколько решений подобных вопросов, но мне не удалось заставить мой код работать. Может ли кто-нибудь указать, как я могу исправить свой код?

Это открыто для всех 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);
      }
  }
13
задан varatis 24 April 2012 в 20:41
поделиться