No Image

Функция факториал в паскале

СОДЕРЖАНИЕ
0 просмотров
11 марта 2020

Задача

Факториал числа представляет собой произведение всех натуральных чисел от 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 или использовать типы для хранения вещественных значений.

Читайте также:  Cell id на карте

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

Замечу сразу, что он не использует Именно ту же самую функцию, а создает альтернативную копию в ячейке памяти, но на деле используем одну. То есть при вызове факториала 5, будет 5 функций в памяти для вычисления каждого числа в отдельности.

factorial:= 5 * factorial (5-1)

Пока что мы не можем вычислить factorial числа 5, так как мы вызвали функцию еще раз и необходимо вычислить теперь факториал 4

factorial:= 4 * factorial (4-1)

Пока что мы не можем вычислить factorial числа 4, так как мы вызвали функцию еще раз и необходимо вычислить теперь факториал 3

factorial:= 3 * factorial (3-1)

Пока что мы не можем вычислить factorial числа 3, так как мы вызвали функцию еще раз и необходимо вычислить теперь факториал 2

factorial:= 2 * factorial (2-1)

Пока что мы не можем вычислить factorial числа 2, так как мы вызвали функцию еще раз и необходимо вычислить теперь факториал 1

if x = 1 then factorial:= 1.

Теперь x = 1 и функция прекращает своё действие и возвращаем 1.

Теперь программа можем вычислить факториалы поочередно от 1 до 5, так как мы больше не вызываем нашу функцию.

factorial:= 2 * factorial (1)

В factorial (1) нам вернулось число 1 и записываем значение в factorial = 2;

factorial:= 3 * factorial (2)

В factorial (2) нам вернулось число 2 и записываем значение в factorial = 6;

factorial:= 4 * factorial (3)

В factorial (3) нам вернулось число 6 и записываем значение в factorial = 24;

Читайте также:  Войти в защищенном режиме

factorial:= 5 * factorial (4)

В factorial (4) нам вернулось число 24 и записываем значение в factorial = 120;

Комментировать
0 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
Adblock detector