Program EndLess2;
End.
PopeAndDog1
Begin
End;
PopeAndDog1
Begin
Procedure PopeAndDog1;
Program EndLess1;
End.
Readln (n);
Begin
End;
Begin
N : Integer;
Var
function Fact ( i : Integer ): Longint;
if i = 1 then Fact := 1
else Fact := i * Fact (i-1)
Write ('Введите число n: ') ;
Writeln ('Факториал n! = ', Fact(n));
Содержание и мощность рекурсивного определения, а также главное назначение, состоит в том, что оно позволяет с помощью конечного выражения определить бесконечное множество объектов. Аналогично, с помощью конечного рекурсивного алгоритма можно определить бесконечное вычисление, причем алгоритм не будет содержать повторений фрагментов текста.
Для создания рекурсивных алгоритмов необходимо и достаточно наличие понятия процедуры или функции. Это вытекает из того, процедуры и функции позволяют дать любой последовательности действий (операторов) имя, с помощью которого можно будет эту последовательность действий вызывать.
Например, следующая процедура будет бесконечно печатать известные всем строки:
Writeln('У попа была собака, он ее любил.');
Writeln('Она съела кусок мяса, он ее убил,');
Writeln('похоронил и надпись написал:');
Однако если оператор вызова процедуры поставить перед выводом текста, как показано ниже: