Код: Выделить всё
public static void teePaarisPaaritud(int[] a){
teePaarisPaaritudRek(a, 0);
}
private static void teePaarisPaaritudRek(int[] a, int i) {
if(i == a.length-1) return;
if(a[i] % 2 != 0){
int temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
teePaarisPaaritudRek(a, i+1);
}
teePaarisPaaritudRek(a, i+1);
}
Например, при вводе int[] a = {-1,0,-7,3,10,4,0,2,-1,-5,6 вывод должен быть [ 0,10,4,0,2,6,−1,−7,3,−1,−5]. Однако мой код немного не достигает цели, и вместо этого я получаю результат [0, 10, 4, 0, 2, 6, -7, 3, -1, -5, -1].< /p>
Как видите, 2-й -1 находится сзади, но он должен быть перед -7. Я попытался установить базу if(i == a.length-2) return;. Это не сработало, потому что тогда в конце осталась бы шестерка. Проблема возникает только в том случае, если длина входного массива четная.
Подробнее здесь: https://stackoverflow.com/questions/783 ... tive-order
Мобильная версия