#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 )