Non ho letto il codice in dettaglio ma ti posso assicurare che è certamente possibile rendere il codice migliore e più compatto.
Innanzitutto realizza un metodo a parte che dato un carattere dice se è una vocale, questo permette di non allungare il tuo inv() rendendolo anche più leggibile.
Poi, altro consiglio, parti con il realizzare la sola inversione della stringa ricorsivamente, senza alcun "filtro" sui caratteri. Ti dico anche subito che quel parametro int i è assolutamente superfluo e inutile!
Una volta che hai fatto la inversione ricorsivamente, aggiungere il filtro è di una banalità disarmante ...![]()