Языки программирования

Рекурсивные функции

Большинство языков программирования поддерживает рекурсивные функции, то есть такие, которые вызывают сами себя. Это весьма мощный инструмент, позволяющий создавать довольно изящные и функциональные программы, но вот используется он достаточно редко. Технически рекурсивные функции ничем не отличаются от обычных. Единственное различие заключается в том, что где-то в коде функции находится вызов ее самой. Например, если вы напишете
function test() { 
разные операторы 
test();
разные операторы
   }
то это и будет рекурсивная функция.
Рекурсия бывает:

  • Прямая
  • Непрямая

Рассмотрим пример рекурсивной функции (прямой), используемой при вычислении факториала x!
function factorial($x) {
if ($x === 0) return 1;
else return $x*factorial($x-1);
}
echo factorial(7);
В рассмотренном примере пользовательская функция factorial() вызывает сама себя, что является прямой рекурсией. Непрямая рекурсия возникает, когда первая функция вызывает вторую, а вторая — первую.

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