Факториал числа 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, если число больше двадцати, то результат будет с ошибкой.
Урок 26. Рекурсия. Вычисление факториала
Если этот тип данных не поддерживается вашим компилятором, вы можете заменить 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
Похожие записи/страницы:
- Вычисление факториала — Pascal(Паскаль)
- Написать программу на Паскале вычисления функции у=sinx+Z!(факториал) для х=5 и z=7- Pascal(Паскаль)
- Составить программу расчета факториала натурального числа n (факториал числа n=1*2*. n)- Pascal(Паскаль)
- Даны 3 натуральных числа а,b,c (все они
- Дано целое число N >0. Используя один цикл, найти сумму 1! +2! + 3! + . +N! (выражение N! — N-факториал — обозначает…
- Вывод квадрата числа от 0 до заданного значения — Python(Питон)
- Функция преобразование символа типа Char в битовое представление — Pascal(Паскаль)
- Разработать рекурсивный алгоритм и программу решения задачи, в которой вычислить : f(n)=(n+2)!/(n+4)!. Исходные данные…
Источник: retrolib.ru
Написать программу которая вычисляет факториал числа введенного с клавиатуры паскаль
Еще раз здравствуйте. Вот такая задача:
Рекурсия. Факториал числа c++ рекурсивно. Рекурсия факториал. Рекурсивный алгоритм факториал. #44
Вычислить значение n! для n, введенного с клавиатуры. Вот мой код:
program faktorial; var n,s,k: real; begin write(‘Введите n ‘); readln(n); s:=1; k:=1; while k
Выдаются неверные значения s, то есть ввожу 3 — ответ 4, ввожу 4 — ответ 5. В чем ошибка?
Участник клуба
Регистрация: 10.11.2008
Сообщений: 1,502
program faktorial; var n,s,k: real; begin write(‘ВВедите n ‘); readln(n); s:=1; k:=1; while k
Ошибку поняли?
Нормальное состояние техники — нерабочее, все остальное частный случай.
Пользователь
Регистрация: 21.03.2009
Сообщений: 35
Честно говоря, не очень. Отличие моего и Вашего кода только в сравнении k и n, но ваша программа тоже выдает неверные значения: у Вас s всегда равен вводимому n.
П.С. Все понял, прошу прощения.
Последний раз редактировалось DsDevis; 24.03.2009 в 04:08 . Причина: Посыпаю голову пеплом.
Пользователь
Регистрация: 20.03.2009
Сообщений: 32
лучше делать через рекурсию.. мне так удобнее, например)
program fac; var n:integer; function fact(n:integer):integer; begin if n=1 then fact:=1 else fact:=fact(n-1)*n; end; begin write(‘vvedi chislo: ‘); readln(n); o:=fact(n); writeln(‘otvet:’, o); read; end.
Источник: www.programmersforum.ru
Факториал в «Паскале»: как вычислить. Примеры программ
Обучение программированию идёт по пути от простого к сложному. Освоив типы данных и операторы языка, переходят к циклическим конструкциям. Задач на циклы существует бесчисленное количество: начиная от вывода цифр в столбик до подсчёта сумм по сложным формулам. Тем не менее у начинающих программистов остаётся вопрос: «Как вычислить факториал в «Паскале»?»
Реализовать задачу можно как минимум тремя способами. Отличаются они используемыми операторами.
Математические сведения
Перед тем как перейти к построению алгоритмов и написанию программ, следует изучить теорию. В математике факториалом называют произведение целого числа, для которого вычисляется выражение, на целые положительные числа меньше его.
Понять определение поможет пример. Пусть требуется выполнить нахождение факториала для числа 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 или использовать типы для хранения вещественных значений.
Источник: fb.ru