Россия и Беларусь начали и продолжают войну против народа Украины!

Рекурсия в Python

  Юрий  | 

  Обновл. 25 Мар 2023  | 

 462

Рекурсия — это процесс определения чего-либо в границах самого себя. Примером в физическом мире может быть размещение двух зеркал друг против друга. Любой объект между ними будет рекурсивно отражаться.

Рекурсивная функция в Python

В Python мы знаем, что функция может вызывать другие функции. Функция даже может вызывать себя. Подобные типы конструкций называются рекурсивными функциями.

Ниже приведен пример рекурсивной функции для нахождения факториала целого числа.

Примечание: Факториал числа — это произведение всех целых чисел от 1 до указанного числа. Например, факториал числа 6 равен 1*2*3*4*5*6 = 720.

Пример рекурсивной функции:

Результат:

The factorial of 3 is 6

Здесь factorial() является рекурсивной функцией, поскольку она вызывает сама себя. Когда мы вызываем эту функцию с положительным целым числом, она будет рекурсивно вызывать себя, уменьшая число.

Вот изображение, которое показывает пошаговый процесс того, что происходит:

Наша рекурсия заканчивается, когда число уменьшается до 1. Это называется базовым условием.

Каждая рекурсивная функция должна иметь базовое условие, которое останавливает рекурсию, иначе функция будет бесконечно вызывать сама себя. Интерпретатор Python ограничивает глубину рекурсии, чтобы избежать бесконечных рекурсий, приводящих к переполнению стека.

По умолчанию максимальная глубина рекурсии равна 1000. Если предел превышен, это приводит к RecursionError. Давайте рассмотрим пример бесконечной рекурсии:

Результат:

Traceback (most recent call last):
File "", line 3, in
File "", line 2, in a
File "", line 2, in a
File "", line 2, in a
[Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded

Преимущества рекурсии


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

   Сложная задача может быть разбита на более простые подзадачи с помощью рекурсии.

   Генерация последовательности проще с рекурсией, чем с использованием какой-либо вложенной итерации.

Недостатки рекурсии

   Иногда логику рекурсии трудно понять.

   Рекурсивные вызовы дороги (неэффективны), так как забирают много памяти и времени.

   Рекурсивные функции трудно отлаживать.


Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (3 оценок, среднее: 5,00 из 5)
Загрузка...

Добавить комментарий

Ваш E-mail не будет опубликован. Обязательные поля помечены *