Рекурсія в Python

 10196

Рекурсія — це процес визначення чогось у межах самого себе. Прикладом у фізичному світі може бути розміщення двох дзеркал одне напроти одного. Будь-який об’єкт між ними відображатиметься рекурсивно.

Рекурсивна функція в 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 Зірок (31 оцінок, середня: 4,65 з 5)
Завантаження...

Залишити відповідь

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