Написать программу для вычисления факториала числа n.
Факториалом числа n (обозначается n!, произносится эн факториал) называют произведение всех натуральных чисел до n включительно. К примеру, факториал числа 5 будет выглядеть так: 5! = 1 * 2 * 3 * 4 * 5 и будет равен 120.
Стоит заметить, что 0! = 1. Факториал определён только для целых неотрицательных чисел.
Стоит учитывать тот факт, что факториал 9 (девяти) равен 362880, что больше чем в 10 раз превышает максимальное значение для типа Integer (диапазон от -32 768 до +32 767), поэтому в данном примере лучше использовать тип LongInt, диапазон которого от -2147483648 до +2147483647. Если же и этого будет недостаточно, то можно воспользоваться вещественными типами, количество значащих цифр в которых достигает 20.
Program factorial;
Uses Crt;
Var f,n,i : LongInt;
Begin
ClrScr;
Write('Введите n=');readln(n);
f:=1;
For i:=1 To n Do f:=f*i;
Write('Факториал от числа ',n,'! = ',f);
Readln
End.
Второй № 2
var n:integer;
function f(x:integer):longint;
begin
if x = 1 then f := 1 else f := x * f(x-1);
end;
begin
writeln('введите N (N=1..13)');
readln(n);
writeln('N!=',f(n));
end.
Вариант № 3
function Factor(n:integer):integer;
var
f:integer;
i:integer;
begin
f:=1;
for i:=2 to n do
f:=f*i;
factor:=f;
end;
Вариант № 4
function factorial(k:integer):integer;
begin
if k = 1
then factorial:=1
else factorial:= k*factorial(k-1);
end;
Вариант 5 Вычисление факториала рекурсивно с использованием указателей
{$N+}
uses crt;
type facktor=^double;
var
n:facktor;
function f(a:double):double;
begin
if a<0 then writeln('Error input')
else if a=0 then f:=1
else f:=a*f(a-1)
end;
begin
clrscr;
new(n);
readln(n^);
writeln('Факториал ',n^:1:0,' = ',f(n^):1:0);
dispose(n);
readkey;
end.
Вариант 6
Program Faktorial (Input, Output);
Var
N : Integer;
F : LongInt;
i : Integer;
Begin
WriteLn ('PASCAL: Вычисление факториала числа N.');
Write ('Введите N: ');
ReadLn (N);
F := 1;
For i := 1 To N Do
F := F * i;
WriteLn (N: 3, '! = ', F);
ReadLn;
End.
Вариант 8
function fact(n:integer):longint;
begin
if n=1 then fact:=1
else fact:=fact(n-1)*n;
end;