Рекурсія в програмуванні

Досить давно, в програмуванні з'явився термін "рекурсія", що означає виклик функції (або ж процедури) безпосередньо з самої себе. Є проста (безпосередня) рекурсія або рекурсія, яка працює через інші процедури і функції (такий вид називається непрямою, складної рекурсією).

У повсякденному і науковому житті ми часто стикаємося з рекурсією. наприклад:
  • трикутник Серпінського;
  • ефект Дросте;
  • обчислення факторіала.

Найпростіший спосіб поспостерігати за рекурсією - це навести веб-камеру на монітор вашого персонального комп'ютера, звичайно ж її включивши.

До питання про те, чи варто застосовувати рекурсивні функції чи ні, багато програмістів відносяться по-різному. Ця тема залишається до сих пір відкритою для обговорення: одні вважають, що рекурсивна форма виглядає наочніше і структурно простіше, зокрема, якщо сам по собі програмований алгоритм має властивість рекурсії. Простіше кажучи, рекурсию можна уявити, якщо ви поставите два дзеркала один напроти одного і подивіться в них. Наведемо приклад рекурсивної процедури:

Рекурсія в програмуванні

Крім того, в функціональних мовах в чистому вигляді (до них відносяться Пролог, Haskell) неможливо поставити цикл синтаксично, тому рекурсія є єдиним доступним засобом завдання повторюваних обчислень. Але іноді, слід уникати рекурсивних конструкцій в програмних модулях, тому що вони можуть стати причиною надмірно глибокої рекурсії. У мовах С ++ / С # функції мають можливість виклику самих себе.

Дамо визначення рекурсивної функції - це функція, в тілі якої оператор викликає функцію, яку містить цей оператор.

Найпоширенішим прикладом рекурсії є відома функція обчислення факторіала factоr (). Факторіал деякого числа цей твір чисел від 1 до цього числа.