Вы должны найти первое слово в String
, передать оставшуюся часть String
рекурсивному вызову и добавить первое слово в конце:
public static String reverse(String str) {
if(str.isEmpty() || !str.contains(" "))
return str;
int sep = str.indexOf(' ');
return reverse(str.substring(sep+1)) + " " + str.substring(0,sep);
}
Вывод:
Before recursion: Cat is running
After recursion: running is Cat
Кстати, цикл ваш оригинальный код бессмысленно. Вы можете просто использовать str
напрямую вместо создания его копии.
Вы можете сделать его еще короче с помощью:
public static String reverse(String str) {
int sep = str.indexOf(' ');
return sep >= 0 ? reverse(str.substring(sep+1)) + " " + str.substring(0,sep) : str;
}