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