Сначала краткое введение в рекурсивные функции ...
Функция называется рекурсивной, если она вызывает себя снова и снова.
Рекурсия может быть как прямой, так и косвенной.
Прямая рекурсия - это когда функция вызывает сама себя. В то время как косвенная рекурсия - это когда функция вызывает другую функцию, а вызываемая функция, в свою очередь, вызывает вызывающую функцию.
То есть, если функция 1 вызывает функцию 2, а затем функция 2 вызывает функцию 1, что приводит к циклу.
Теперь давайте разберемся, что такое рекурсия и для чего она используется…
Возьмем пример. Предположим, у нас есть неизвестное нам слово (проблема). Нам нужно найти его значение, поэтому мы найдем его в словаре (функции).
Но когда мы смотрим на значение, мы обнаруживаем, что значение, в свою очередь, содержит еще одно слово, которое мы не понимаем. Итак, у нас есть решение, но оно содержит часть, которая все еще проблематична. Чтобы полностью понять значение исходного слова, нам нужно сначала понять значение проблемного слова в значении исходного слова.
Для этого мы снова ищем в словаре значение нового проблемного слова. То есть мы идем по тому же пути, что и на первом этапе.
Мы будем повторять этот процесс, пока не найдем решение, в котором нет проблемных слов.
Вот для чего нужна рекурсия. У нас есть проблема, и для ее решения мы идем определенным путем. Мы получили решение, но в этом решении все еще есть некоторая проблемная часть. Чтобы найти полное решение, нам нужно сначала решить проблемную часть. Для этого мы идем по тому же пути, по которому шли в первом шаге. То есть снова вызвать ту же функцию. Мы делаем это до тех пор, пока не найдем решение, которое полностью имеет для нас смысл. Это завершающий шаг.
В качестве примера рассмотрим программу, которая находит факториал числа с помощью рекурсивных функций.
#include ‹iostream›
используя пространство имен std;
int факториал (int n);
int main () {
int n;
cout ‹
cout ‹
возврат 0;
}
int factorial (int n) {
if(n > 1)
вернуть n * факториал (n - 1);
иначе вернуть 1;
}
Если здесь n задано значение 5. Факториальная функция будет вызвана для 5, решение, которое эта функция предложит на первом проходе, будет 5 * 4! Здесь проблемная часть в этом решении - 4! Таким образом, функция факториала вызовет себя снова, но на этот раз для 4. Этот процесс будет повторяться до тех пор, пока у нас не будет термина n! В последний раз функция факториала вызывается для 1! который вернет 1 в качестве ответа, а затем, проследив назад, мы получим решение для 5!
Примечание: может случиться так, что мы так и не дойдем до завершающего дела. Это называется бесконечной рекурсией.
В приведенных выше примерах из словарей это можно объяснить как…
Когда мы ищем значение исходного слова, мы находим проблемное слово, а когда мы ищем значение проблемного слова, мы, в свою очередь, находим исходное слово в его определении. То есть мы будем продолжать цикл бесконечно, поскольку нет прерывающего случая.
Здесь вы можете узнать больше о рекурсии.
Привет, я Имран, автор этого поста. У меня есть веб-сайт публикации и канал на YouTube, где я бесплатно размещаю учебные пособия, курсы и блоги о разработке программного обеспечения. Вы можете проверить это здесь:
"YouTube канал"
"Веб-сайт"
✉️ Подпишитесь на рассылку еженедельно Email Blast от CodeBurst 🐦 Подпишитесь на CodeBurst на Twitter , просмотрите 🗺️ Дорожная карта веб-разработчиков на 2018 год и 🕸️ Изучите веб-разработку с полным стеком .