Как пишется на паскале факториал

Факториал числа 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.

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).

Программа для вычисления факториала в цикле

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. 

Вычислить значение факториала n! c использованием функции

Program func_2;

Uses crt;

Var
  n, x: integer;

function fact(a: integer): integer;
var
  i, p: integer;
begin
  p := 1;
  for i := 1 to a do
    p := p * i;
  fact := p;
end;

begin
  write('введите  n:');
  readln(n);
  x := fact(n);
  writeln(n, '!=', x);
  readln;
end

На чтение 4 мин Просмотров 1к. Опубликовано 07.05.2019

Содержание

  1. Вычисление факториала в pascal с помощью цикла
  2. Задача
  3. Решение
  4. Математические сведения
  5. Первый способ
  6. Второй способ
  7. Третий способ
  8. Замечание

Факториал — произведение натуральных чисел от единицы до заданного числа. Имеет условное обозначение в виде восклицательного знака. n!=1*2*3*. *n (Например: 3!=1*2*3=6).

В Turbo Pascal факториал находится, как правило, двумя способами: с помощью цикла или с помощью рекурсии.

Вычисление факториала в pascal с помощью цикла

Данный способ нахождения факториала исключительно прост. В цикле от 1 до n умножается число само на себя. При этом необходимо учитывать условие, что 0!=1. Ниже представлена реализация программы с помощью цикла for. Аналогично используются repeat и while.

if (n=0) then writeln(‘0!=1’) else

if x=0 then fact:=1

Факториал числа — Вычисление с помощью цикла (1 способ)

Факториал — Нахождение факториала в паскале с помощью рекурсии (2 способ)

Задача

Факториал числа представляет собой произведение всех натуральных чисел от 1 до этого числа включительно. Например, факториал числа 7 выглядит так:
1 * 2 * 3 * 4 * 5 * 6 * 7

Факториал числа обозначается как само число после которого следует восклицательный знак. Например, 7!. Таким образом:
7! = 1 * 2 * 3 * 4 * 5 * 6 * 7 = 5040

С увеличением числа его факториал быстро возрастает. Так если 3! = 6, то уже 10! = 3628800. Поэтому для натуральных чисел больше 12-ти в языке программирования Паскаль просто так факториал вычислить нельзя.

Допустим, требуется определить факториал числа, которое ввел пользователь.

Решение

Переменной factorial сначала присваивается значение 1.
0! = 1 и 1! = 1.

Если пользователь ввел число больше единицы, то выполняется цикл, в теле которого на каждой итерации значение переменной factorial умножается на следующее натуральное число (переменную i ).

Обучение программированию идёт по пути от простого к сложному. Освоив типы данных и операторы языка, переходят к циклическим конструкциям. Задач на циклы существует бесчисленное количество: начиная от вывода цифр в столбик до подсчёта сумм по сложным формулам. Тем не менее у начинающих программистов остаётся вопрос: «Как вычислить факториал в «Паскале»?»

Реализовать задачу можно как минимум тремя способами. Отличаются они используемыми операторами.

Математические сведения

Перед тем как перейти к построению алгоритмов и написанию программ, следует изучить теорию. В математике факториалом называют произведение целого числа, для которого вычисляется выражение, на целые положительные числа меньше его.

Понять определение поможет пример. Пусть требуется выполнить нахождение факториала для числа 3. Решение: 3! = 3 * 2 * 1 = 6.

Обозначается действие восклицательным знаком, который ставится после числа. Важное замечание: факториал определён только для целых положительных чисел. Вместе с тем, введено понятия для нуля: 0! = 1.

Считать выражение для больших значений вручную – занятие долгое. Чтобы убыстрить процесс вычислений, используют компьютерные программы. Далее рассмотрены способы, как найти факториал в «Паскале».

Первый способ

Код ниже показывает вариант программы.

В примере используют составную конструкцию с условием, которое записывается перед телом цикла. Синтаксис записи:

Выполняется код следующим образом: программа проверяет истинность выражения , в случае положительной проверки переходит на .

Возвращаясь к программе, нужно обратить внимание на следующие строки:

  • 2 – задаётся число n, для которого будет выполнен расчёт;
  • 6 – заголовок цикла;
  • 7 – начало цикла;
  • 8 – вычисление переменной fact, которая хранит значение факториала числа n;
  • 9 – увеличение переменной-счётчика на единицу;
  • 10 – конец цикла.

Второй способ

Следующий предлагает вычислить факториал в «Паскале» с помощью оператора repeat.

Конструкция цикла: repeat until <условие>;

Чтобы понять, как работает программа, рассмотрим её построчно:

  • 2 – константе n назначается число, для которого выполняется вычисление;
  • 7 – начало цикла;
  • 8, 9 – расчёт факториала и увеличения счётчика i;
  • 10 – конец тела цикла;
  • 11 – проверка условия, поскольку условие располагается после последовательности операторов, повтор действий будет выполнен как минимум один раз.

Третий способ

Последняя программа также дает возможность вычислить факториал в «Паскале» и является самой компактной по размеру. Причина – используемый оператор for, для которого увеличение счётчика i задаётся в параметрах цикла.

Работает код следующим образом (цифрами указаны строки листинга):

  • 2 – константе n присваивают значение числа, для которого вычисляется факториал;
  • 6 – задаются параметры цикла – начальное и конечное значения;
  • 7 – начало цикла;
  • 8 – вычисление переменной fact;
  • 9 – конец цикла.

Замечание

Даже для чисел из первой десятки факториал имеет значение больше, чем допускает тип данных integer. Поэтому программа в «Паскале» покажет сообщение об ошибке. Исправить её просто – нужно заменить тип данных для переменной-результата на longint или использовать типы для хранения вещественных значений.

Вычислить факториал заданного числа n (n> 0) () — тоесть произведение чисел от 1 до n.

Вот подобное, но у меня не выходит…

Program my;
var 
    i, s: integer; 
    f: longint;
begin
s := 1;
for i := 1 to 20 do
    f := f*i;
    writeln('произведение от 1 до 20 ',f);
    readln;
end.

Grundy's user avatar

Grundy

79.4k9 золотых знаков74 серебряных знака132 бронзовых знака

задан 23 фев 2012 в 15:18

dadayar's user avatar

1

Потому что вы, как я понимаю, первоначально хотели, чтобы значение факториала содержалось в переменной «s», но позже зачем-то завели переменную «f», которая вообще хранит в себе адрес ячейки памяти, в которой находится (Вы же её не обнулили). Вот функция, возвращающая факториал до «n»:

function factorial(n):integer;
var 
    i,f: integer; 
begin
f:=1;
for i := 1 to n do
    f := f*i;
    result:=f;
end;

Nicolas Chabanovsky's user avatar

ответ дан 23 фев 2012 в 15:39

AseN's user avatar

AseNAseN

13.5k13 золотых знаков60 серебряных знаков122 бронзовых знака

1

Чуток осталось — присвоить начальное значение переменной f. Сейчас она не инициализирована, поэтому итоговое значение равно нулю.

Program my;
var 
    i: integer; 
    f: longint = 1;
begin
    for i := 1 to 10 do
        f := f*i;
    writeln('произведение от 1 до 10 ', f);
end.

ответ дан 23 фев 2012 в 15:40

Nicolas Chabanovsky's user avatar

Nicolas ChabanovskyNicolas Chabanovsky

50.7k80 золотых знаков258 серебряных знаков493 бронзовых знака

1

Перейти к содержанию

Факториал в Паскале

На чтение 2 мин. Опубликовано 16.02.2021

Многие в школе на информатике изучали язык программирования Pascal. Он отлично подходит для начинающих программистов, которые хотят ознакомиться с азами в программировании. Благодаря Паскалю вы сами можете написать что-то простенькое вроде калькулятора,однако это уже что-то и возможно, именно с этого начнется ваш путь программиста!

Как найти факториал любого заданного положительного числа? Вы сможете вычислить факториал числа, используя пример, который я приведу ниже.

В этом примере вы научитесь вычислять факториал числа с помощью цикла for. Поэтому в этом примере используется вложенная функция цикла for в pascal. эта программа на паскале генерирует факториал.

Факториал положительного числа n задается:

факториал n (n!) = 1*2*3*4….н

Пример: 

programFactorialOfAnyNumber;
var
i,a,b,j:integer; {инициализировать переменные}
begin
writeln(‘Введите любое число:’); { Вывести сообщение для следующего действия}
readln(j); {принимать ввод с клавиатуры}
fori := 1 tojdo {цикл через хранилище значений в переменной j}
begin
a:=i*a; {incremnet как это цикл хранения результата в переменной}

for a:=1 to a do { результат цикла}
begin
b:=a; {сохранить общий ответ на переменную b}
end; {конец оператора цикла}
end; {конец оператора цикла}

writeln(‘Факториал ‘,j,’ is = ‘,b); { Результат на экране}
readln(); {Сообщение об ошибке}
end. { Конец программы}

Эта программа берет положительное целое число от пользователя и вычисляет факториал с помощью цикла for.

Программа вычисляет факториал положительного числа N:

fact(0) = 1;
fact(n) = fact(n-1)*n;

Решение:
факториал можно вычислять рекурсивно (по формуле, приведенной выше).

program functions_4;
uses crt;
var
  n: integer;
function factorial(m: integer): integer;
var i, f: integer;
begin
  f:=1;
  for i:=1 to m do
    f:=f*i;
  factorial:=f;
end;
begin
  clrscr;
  write('N > '); read(n);
  write(n, '! = ', factorial(n));
  readkey;
end.

Чтобы понять это решение вам пригодится материал по теме «Функции и процедуры в Pascal«.

Другое решение — вычисление факториала в цикле:

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.

Чтобы понять это решение достаточно материала лекции «Циклы в Pascal«.

В данной задаче нам понадобятся 3 переменные. Переменная n будет хранить в себе число вводимое с клавиатуры. Переменная i будет играть роль счетчика для цикла. Переменная f хранит в себе окончательный результат.

Задачу по поиску факториала проще всего решить с помощью цикла for. В начале программы мы вводим число n. После этого присваиваем переменной f значение 1 (для того, чтобы правильно считать произведение). В цикле for считаем значение факториала и заносим его в переменную f.

Допустим, мы ввели число 3 ( n ) , тогда цикл работает так :

1 шаг : 1(f) * 1(i) = 1 ( f )
2 шаг : 1(f) * 2(i) = 2 ( f )
3 шаг : 2(f) * 3(i) = 6 ( f )

Стоит учитывать тот факт, что факториал 9 (девяти) равен 362880, что больше чем в 10 раз превышает максимальное значение для типа Integer (диапазон от -32 768 до +32 767), поэтому в данном примере лучше использовать тип LongInt, диапазон которого от -2147483648 до +2147483647. Если же и этого будет недостаточно, то можно воспользоваться вещественными типами, количество значащих цифр в которых достигает 20.

Вычислить факториал числа

Просмотров 4.1к. Обновлено 8 сентября 2021

Вычислить факториал введенного числа.

Факториалом числа называют произведение всех натуральных чисел до этого числа включительно. Например, факториал числа 4 равен 1*2*3*4 = 24. Записывается факториал так: 4! = 24.

Поскольку факториал резко увеличивается с каждым следующим числом не следует вводить больших чисел.

  1. Присвоим переменной, накапливающей произведение натуральных чисел, начальное значение 1.
  2. Присвоим переменной-счетчику значение 2.
  3. Пока переменная счетчик не достигнет числа, введенного пользователем,
    1. умножать значение переменной, в которой накапливается произведение, на значение переменной счетчика,
    2. увеличивать счетчик на 1.

Pascal

Язык Си

Python

КуМир

Basic-256

Понравилась статья? Поделить с друзьями:
  • Как пишется на основании изложенного
  • Как пишется на осетинском нет
  • Как пишется на осетинском мое сердце
  • Как пишется на опушке рощи
  • Как пишется на одном листе