Разберём решение одной из популярных задач на рекурсию. Будет разработана программа, отображающая строку задом наперёд на языке программирования Java.
Данную задачу преподаватели часто дают студентам при закреплении темы «Рекурсия» в программировании. Кроме того, соискатель может получить её при прохождении собеседования на работу.
Условие задачи:
Напишите рекурсивный метод, отображающий строку задом наперед.
Определение: рекурсивным называется такой метод (или функция), который в своём теле вызывает сам себя.
Рассмотрим решение приведённой задачи на языке Java. Ниже приводится листинг программы.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
public class Reverse { public static void main(String[] args) { String s = "Программирование на Java"; if(s.length() > 0) { reverseString(s, s.length() - 1); } } public static void reverseString(String s, int index) { if(index == 0) { System.out.println(s.charAt(index)); return; } System.out.print(s.charAt(index)); reverseString(s, index - 1); } } |
Разберём код. Главный класс программы Reverse содержит рекурсивный метод reverseString (строки 11-21), который выводит исходную строку в консоль задом наперёд. Метод принимает следующие аргументы:
- String s — исходная строка, которую необходимо вывести в обратном порядке;
- int index — целое число, являющееся индексом (номером) последнего символа в строке. В Java нумерация символов начинается с нуля.
Метод reverseString проверяет: является ли текущий индекс символа нулевым (строка 12)? Если да, то происходит вывод в консоль этого [последнего, поскольку вывод строки начинается с её конца] символа (строка 13) с последующим переходом на новую строку и возврат из метода с помощью оператора return (строка 15).
Данный оператор if является так называемым условием выхода из рекурсии.
Если index не равен нулю, то символ с номером index выводится в консоль (строка 18) [без перехода на новую строку] и выполняется рекурсивный вызов reverseString с аргументами s и index — 1 [переходим к символу, стоящему левее] (строка 20).
В методе main содержится исходная строка s (4) и происходит вызов метода reverseString (строка 7), если длина исходной строки больше нуля (6). При этом в вызываемый метод передаётся строка s и индекс её последнего символа.
Продемонстрируем результат работы программы:
Теперь Вы узнали, как развернуть строку задом наперёд с помощью рекурсии на Java.
Поделиться в соц. сетях: