Вычисление факториала — Pascal(Паскаль)

Написать программу для вычисления факториала числа 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;

Leave a Comment