Сначала краткое введение в рекурсивные функции ...

Функция называется рекурсивной, если она вызывает себя снова и снова.

Рекурсия может быть как прямой, так и косвенной.

Прямая рекурсия - это когда функция вызывает сама себя. В то время как косвенная рекурсия - это когда функция вызывает другую функцию, а вызываемая функция, в свою очередь, вызывает вызывающую функцию.

То есть, если функция 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 год и 🕸️ Изучите веб-разработку с полным стеком .