AFON // радиотехник affonya@mail.ru
← Все проекты Delphi

Факториал (два способа)

Вычисление факториала итеративно и рекурсивно, тип Int64.

DP.06 · Основы

Задача

Посчитать n! двумя способами и сравнить результаты.

Алгоритм

Итерация — цикл с накоплением произведения. Рекурсия — функция вызывает саму себя до базового случая n<=1.

Исходный код

⇩ Скачать 06-faktorial.dpr

program Faktorial;
{$mode delphi}{$apptype console}
uses SysUtils;
function FactIter(n: Integer): Int64;
var i: Integer; r: Int64;
begin r := 1; for i := 2 to n do r := r * i; Result := r; end;
function FactRec(n: Integer): Int64;
begin if n <= 1 then Result := 1 else Result := n * FactRec(n - 1); end;
var n: Integer;
begin
  Write('n = '); ReadLn(n);
  WriteLn('Итерация: ', FactIter(n));
  WriteLn('Рекурсия: ', FactRec(n));
  ReadLn;
end.

Пояснения

Int64 держит факториалы примерно до 20!. Дальше нужна длинная арифметика.