Язык Паскаль допускает, чтобы подпрограмма вызывала саму себя
(рекурсивное обращение). Эта возможность связана с тем, что при каждом
новом обращении к подпрограмме параметры, которые она использует,
заносятся в стек, причем параметры предыдущего обращения тоже
сохраняются.
В ряде случаев (обычно для рекурсивных алгоритмов) рекурсивное
оформление подпрограммы может быть компактным и эффективным, но не
следует забывать об опасности переполнения стека.
Пример: вариант функции, рекурсивно вычисляющей факториал числа N.
Function Factorial (N: Byte): LongInt;
Begin
If N in [0..1]
Then Factorial :=1
Else Factorial := N* Factorial(N-1)
End;