Текст программы Program evklid;
Uses Crt;
Var
m, { данное число }
n { данное число }
: longint;
depth { глубина рекурсии (количество рекурсивных вызовов)}
: word;
Function rec (
m, { данное число }
n { данное число }
: longint ) : longint;{находит наибольший общий делитель с помощью рекурсии }
begin
Inc (depth);
if n = 0 then rec := m
else
if m < n then rec := rec (n, m)
else rec := rec (m - n, n);
end;
Function iter (
m, { данное число }
n { данное число }
: longint) : longint; {находит наибольший общий делитель с помощью итерации}
var
t { дополнительная переменная }
: longint;
begin
while n > 0 do
begin
if m < n
then
begin
t := m; m := n; n := t;
end;
t := m - n; m := n; n := t;
end;
iter := m;
end;
BEGIN
ClrScr;
depth := 0;
writeln('Алгоритм Эвклида. Метод вычитаний.');
writeln;
{исходные значения функции передаются в подпрограмму rec()}
WriteLn ('Рекурсивная функция; ', rec (200, 62140));
WriteLn ('Глубина рекурсии: ', depth);
{исходные значения функции передаются в подпрограмму iter()}
WriteLn ('Итерационная функция: ', iter (200, 62140));
WriteLn;
ReadLn;
END.