Рекурсивно перевернуть массив, начиная с индекса 0 - PullRequest
0 голосов
/ 19 июня 2020

Мне нужно рекурсивно перевернуть массив, передавая только 2 параметра, но, похоже, не работает. это то, что я пробовал

private static void rotate(char[]a, int i){
    if(i==a.length){
        return;
    }else{
        char temp = a[i];
        a[i] = a[a.length - 1 - i];
        a[a.length - 1 - i] = temp;
        rotate(a, i+1);         
    }   
}

, если я передаю что-то вроде char [] x = {'a', 'b', 'c'}; он напечатает cb c вместо cba. что не так?

1 Ответ

0 голосов
/ 19 июня 2020

У вас неправильное условие выхода из рекурсии. Правильный:
if (i == a.length/2) { return; }

Вы меняете местами элементы с соответствующими элементами из конца массива. Когда дойдете до середины массива - вся работа сделана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...