DP.06 · Основы
Задача
Посчитать n! двумя способами и сравнить результаты.
Алгоритм
Итерация — цикл с накоплением произведения. Рекурсия — функция вызывает саму себя до базового случая n<=1.
Исходный код
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!. Дальше нужна длинная арифметика.