Рекурсія: рекурсивна функція в програмуванні

28 вересня 2023 р.

Розробка

Taras Soros

27 переглядів

Рекурсія (рекурсійна функція) – це повторювальний виклик одної, і тої ж самої функції всередині себе до визначення певної умови. Умовою повинно бути обов’язкове закінчення функції (вихід з неї), в іншому випадку відбудеться зациклення, що призведе до збою програми.

Історія виникнення рекурсії

Термін “рекурсія” використовувався в математиці задовго до того, як з’явилися комп’ютери та програмування. Він вперше був введений в 1842 році математиком та логіком Августом Мебіусом для опису функції, що повторюється сама в собі.

У програмуванні рекурсія почала використовуватися з моменту виникнення перших мов програмування, наприклад, Fortran та Lisp, що з’явилися в 1950-ті роки. Одним з ранніх прикладів використання рекурсії було введення числа Фібоначчі, яке було описано в книзі “The Art of Computer Programming” Дональда Кнута.

Приклад рекурсії

Розгляньмо приклад рекурсії, обчисливши факторіал числа.

>> def factorial(n):<br>...   if n == 0:<br>...     return 1<br>...   else:<br>...     print(n)<br>...     return n * factorial(n-1)<br>...<br>>>> factorial(5)<br>5<br>4<br>3<br>2<br>1<br>120

Ця функція обчислює факторіал числа n шляхом виклику самої себе з аргументом n-1, поки n не дорівнює 0. Коли n дорівнює 0, функція повертає 1

Наприклад, факторіал числа 5 можна обчислити, викликавши функцію factorial(5). Функція спочатку перевіряє, чи n не дорівнює 0. Оскільки n дорівнює 5, функція повертає 5 * factorial(4). Функція factorial(4) знову викликає саму себе і повертає 4 * factorial(3). Цей процес триває, доки функція не дорівнює factorial(0), що повертає 1. Тоді, функція factorial(1) поверне 1 * factorial(0), що також дорівнює 1. Кінцевий результат factorial(5) буде 120, оскільки 5 * 4 * 3 * 2 * 1 дорівнює 120.

Рекурсія і цикл

Цикли та рекурсія – це два різних способи вирішення завдань, і вибір одного з них залежить від конкретної задачі. В деяких випадках рекурсія може бути більш читабельною та простішою для реалізації, ніж цикл. Однак, в інших випадках, особливо коли рекурсія викликається багато разів, вона може бути менш ефективною з точки зору продуктивності, оскільки при кожному виклику функції створюється новий контекст функції та новий стек викликів.

Рекурсія може бути особливо корисною в таких задачах, де завдання можна розділити на менші, але аналогічні задачі. Вона допоможе уникнути дублювання коду та спростити реалізацію, оскільки завдання можна вирішити шляхом виклику тієї ж функції з іншими аргументами.

Цикли, з іншого боку, можуть бути більш простим та ефективним способом вирішення завдань у випадках, коли потрібно виконувати однакову послідовність операцій багато разів з різними параметрами, і коли це можливо зробити без створення багатьох викликів функцій.

Читайте також
Рекурсія: рекурсивна функція в програмуванні Рекурсія: рекурсивна функція в програмуванні

Рекурсія (рекурсійна функція) – це повторювальний виклик одної, і тої ж самої функції всередині себе до визначення певної умови.