Java-программа для отображения перестановок массива целых чисел

#java #recursion #permutation

#java #рекурсия #перестановка

Вопрос:

Пытаюсь показать перестановки массива int с использованием рекурсии, однако по какой-то причине при вызове функции ничего не выводится. Есть ли что-то в функции main, чего мне не хватает?

      public static void Permutation(int[] a, int prefix) {

    int length = a.length;

    if (length == prefix) {

        printArray(a);

    }

    else {

        for (int i = 0; i < prefix; i  ) {

            swap(a, prefix, i);

            Permutation(a, prefix   1);

            swap(a, prefix, i);

        }
    }
}

public static void swap(int[] a, int x, int y) {

    int z = a[x];

    a[x] = a[y];

    a[y] = z;

}

public static void printArray(int[] thing) {

    System.out.println("n");

    for (int x = 0; x < thing.length; x  )
        System.out.print(thing[x]);

}

public static void main(String[] args) {

    int a[] = { 1, 2, 3 };
            Permutation(a, 0);
    }
  

Допустим, у меня есть массив int из 1, 2 и 3. Вывод должен быть

 1 2 3
1 3 2 
2 1 3 
2 3 1
3 1 2 
3 2 1
  

Комментарии:

1. Что значит for (int i = 0; i < prefix; i ) , если префикс равен 0? Вы должны быть в состоянии выяснить это самостоятельно, например, просто выполнив код построчно с помощью вашего отладчика. Потратьте 3 минуты, чтобы научиться ею пользоваться, позже вы сэкономите несколько дней.

Ответ №1:

Посмотрите на свой цикл for и проанализируйте программу 🙂

 for (int i = 0; i < prefix; i  )