10.6. Рекурсивные процедуры и функции
Язык Паскаль допускает, чтобы подпрограмма вызывала саму себя (рекурсивное обращение). Эта возможность связана с тем, что при каждом новом обращении к подпрограмме параметры, которые она использует, заносятся в стек, причем параметры предыдущего обращения также сохраняются.
В ряде случаев (обычно для рекурсивных алгоритмов) рекурсивное оформление подпрограммы может быть более компактным и эффективным, но не следует забывать об опасности переполнения стека.
Пример. Вариант функции, рекурсивно вычисляющей факториал числа N.
functicon Factorial(N: Byte): Longint;
begin
if N in [0..1]
then Factorial := 1
else Factorial := N * Factorial(N - 1)
end;
|