Факториал числа n - это функция, которая возвращает произведение всех натуральных чисел от 1 до n включительно.
Для обозначения факториала используется восклицательный знак - “!”.
n! = 1 ⋅ 2 ⋅ 3 ⋅ 4 ⋅ … ⋅ n
Факториал нуля 0! = 1
Программа для рекурсивного вычисления факториала
Если посмотреть на формулу n! = 1 ⋅ 2 ⋅ 3 ⋅ 4 ⋅ … ⋅ n с обратной стороны, то можно заметить, что факториал числа n равен n! = (n - 1)! ⋅ n. Записав это выражение в виде функции получим - f(n) = f(n-1) ⋅ n.
Код программы:
{$CODEPAGE UTF8}
program FactorialCalc;
var
result : QWord;
x : integer;
function Factorial(n : integer) : QWord;
begin
if (n = 0) or (n = 1) then
Factorial := 1
else
Factorial := Factorial(n - 1) * n;
end;
begin
writeln('Рекурсивное вычисление факториала');
write('x = ');
readln(x);
result := Factorial(x);
writeln(x, '!', ' = ', result);
readln;
end.
В программе использован тип QWord (без знаковое 64-битное число) для получения наибольшего результата. Используя этот тип, можно найти факториал числа до 20, если число больше двадцати, то результат будет с ошибкой.
Если этот тип данных не поддерживается вашим компилятором, вы можете заменить QWord на любой другой целочисельный тип(к примеру integer).
Программа для вычисления факториала в цикле
{$CODEPAGE UTF8}
program Factorial;
var
k, res : QWord;
function Fact(n : integer) : QWord;
var
i : integer;
begin
Fact := 1;
if n > 0 then
for i := 1 to n do
Fact := Fact * i;
end;
begin
writeln('Вычисление факториала');
write('Введите целое число от 0 до 20 ');
readln(k);
res := Fact(k);
writeln(k, '!', ' = ', res);
readln;
end.