Лекция: Program Factorial_Up;

Var

N: Integer;

function Fact_Up(i :Integer): Longint;

Var

Mult: Longint;

Begin

if i = 1 then Mult := 1

else Mult := Fact_Up (i-1);

Fact_Up := Mult * i {Накопление факториала стоит после }

{оператора рекурсивного вызова. }

{Следовательно вычисление выполняется на возврате. }

End;

Begin

Write ( 'Введите число n: ');

Readln (n);

Writeln ('Факториал n! = ', Fact_Up (n));

End.

Приведем таблицу трассировки по уровням рекурсии, аналогичную таблице для функции Fact_Dn:

Рис.2. Трассировка значений параметров

еще рефераты
Еще работы по информатике