Рекурсивные функции онлайн урок.


Рекурсия - это процесс, который означает вкладывание некоторой сущности в саму себя. Фактически этот процесс запускает некоторый цикл.

В этом уроке рассмотрим рекурсивные функции - это функции, в теле которых есть вызов самих себя. Соответственно это ведет к цепочке вызовов этой функции, которая может продолжаться до бесконечности, если не записать в теле функции инструкцию, которая остановит эту цепочку вызовов.

Рассмотрим типичный пример рекурсивной функции, которая вычисляет n! = 1*2*3*...*n.



В данном случае, при вызове функции factorial(4) будет возвращено значение 4 * factorial(3). Вызов функции factorial(3) вернет 3 * factorial(2), а это значит, что вызов factorial(4) вернет на самом деле 4 * 3 * factorial(2). Вызов factorial(2) вернет 2 * factorial(1) = 2, поскольку в теле функции есть условие, что при $n = 1 функция вернет 1. Это, в свою очередь значит, что factorial(4) вернет значение 4 * 3 * 2 * 1 = 24.

Замечание. При помощи рекурсий можно создавать компактный и читабельный код, но это не всегда является оптимальным решением относительно ресурсов системы.

Замечание. При некорректной записи рекурсии велика вероятность бесконечного циклы вызовов функцией самой себя, потому следует внимательно записывать инструкции в теле функции.

Проверьте свои знания
Определить рекурсивную функцию - аналог функции print_r