Разворот предложения через рекурсию в Java — пример с методом
Программа переворачивает строку (предложение) задом наперёд с помощью рекурсивной функции.
Пример: переворот предложения через рекурсию
public class Reverse {
public static void main(String[] args) {
String sentence = "Go work";
String reversed = reverse(sentence);
System.out.println("The reversed sentence is: " + reversed);
}
public static String reverse(String sentence) {
if (sentence.isEmpty())
return sentence;
return reverse(sentence.substring(1)) + sentence.charAt(0);
}
}
Вывод:
The reversed sentence is: krow oG
В программе выше используется рекурсивная функция reverse().
На каждом шаге мы добавляем (конкатенируем) результат следующего вызова reverse() к первому символу строки, полученному через charAt(0).
Предупреждение
Рекурсивный вызов должен идти до charAt(), тогда последние символы добавятся к левой части. Если поменять порядок, вы получите исходное предложение без изменений.
В конце мы доходим до пустой строки, и reverse() возвращает перевёрнутое предложение.
Примечание
Метод sentence.substring(1) возвращает часть строки sentence начиная с индекса 1 до конца строки.
Шаги выполнения:
Итерация |
reverse() |
substring() |
reversedString |
|---|---|---|---|
1 |
reverse(«Go work») |
«o Work» |
result + «G» |
2 |
reverse(«o Work») |
« Work» |
result + «o» + «G» |
3 |
reverse(» Work») |
«Work» |
result + « « + «o» + «G» |
4 |
reverse(«Work») |
«ork» |
result + «W» + « « + «o» + «G» |
5 |
reverse(«ork») |
«rk» |
result + «o» + «W» + « « + «o» + «G» |
6 |
reverse(«rk») |
«k» |
result + «r» + «o» + «W» + « « + «o» + «G» |
7 |
reverse(«k») |
«» |
result + «k» + «r» + «o» + «W» + « « + «o» + «G» |
Финал |
reverse(«») |
«kroW oG» |