Программа для решения факториала на C++

Программа для решения факториала на C++

Написать программу на C++ для вычисления(нахождения или решения) факториала — это очень популярное задание в сборниках по обучению программированию. Решение этой задачи и многих других размещено в разделе с решениями задач по программированию на C++. В данной статье мы разберем как реализовать решение на языке программирования C++.

Для начала — что такое факториал?

Факториалэто произведение всех натуральных чисел от 1 до N включительно. То есть, если N = 5, то значение факториала

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

До начала вычислений необходимо узнать N. N может быть больше или равно единице (N>=0). Поэтому для начала напишем каркас приложения, которое будет получать значение N и проверять его. Если N не соответствует, то программа выдаст ошибку «Error: N < 0.«. Листинг программы следующий:

Компилируем, запускаем и вводим любую N, которая меньше 0.

Получили ошибку, программа сообщила, что N < 0.

Запускаем и вводим любую N, которая больше или равно 0.

Программа ничего не вывела после, значит выполнился участок кода, где написано «Здесь будет код…«.

Теперь нам достаточно вставить в место, где написано «Здесь будет код…» нужную реализацию алгоритма по нахождению факториала.

Нахождение факториала с помощью цикла

Для нахождения факториала напишем свою функцию, которая будет принимать значение N и возвращать результат.

Реализовать алгоритм нахождения факториала очень просто:

Что делает функция? Принимает значение N, после чего определяется переменная F, она будет хранить в себе ответ. Запускается цикл for от 1 до N, то есть переменная i будет иметь значения от 1 до N, эти значения мы используем для перемножения переменной F.

Для N=0 значение факториала равно 1. Цикл не будет вообще выполняться, т.к. i должна быть меньшей или равной N, в данном случае первое значение i=1, а N=0. Функция просто возвратит F, которая равно 1.

Для N=1 значение факториала равно 1. Цикл выполнится 1 раз, произойдет умножение F на i, а так как первое значение i = 1, то F так и останется равна 1.

Для остальных значений N цикл будет выполняться N раз, с каждой итерацией i будет увеличиваться на 1 и умножать на себя F.

Вставляем функцию в нашу программу:

Теперь проверим работу программы, для этого скомпилируем, запустим и попробуем ввести различные значения.

Пусть найдет факториал от 0

Получили значение 1. Мы знаем, что факториал от 0 равен единице, здесь программа работает верно.

Пусть найдет факториал от 1

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

Пусть найдет факториал от 5

Получили значение 120. Проверим: F = 1*2*3*4*5 = 120. Программа верно вычислила факториал.

Рекурсивное нахождение факториала

Для такого способа мы тоже напишем функцию, но она не будет содержать цикла. Рекурсивная функцияэто функция, которая вызывает сама себя.

Наша функция factorial() будет принимать значение N и возвращать N*factorial(N-1). То есть будет возвращать значение N умноженное на саму себя, но только с N-1.

Код реализации рекурсивной функции нахождения факториала

Как это работает?

Допустим, N = 3. Мы передаем значение функции factorial(3), а она возвращает значение 3 * factorial(2), в свою очередь factorial(2) возвращает 2 * factorial(1), а factorial(1) возвращает 1. И теперь мы идем в обратном порядке:

factorial(2) = 2 * factorial(1) = 2 * 1 = 2;

factorial(3) = 3 * factorial(2) = 3 * 2 = 6;

Вызванная функция factorial(3) возвратит нам 6.

А factorial(0) и factorial(1) сразу вернут 1.

Вставим рекурсивную функцию в программу для нахождения факториала:

Компилируем, запускаем и проверяем.

Значение факториала для 0

Вывела 1, а мы знаем, что факториал от 0 равен 1. Значит работает верно.

Значение факториала для 1

Вывела 1, а мы знаем, что факториал от 1 равен 1. Значит работает верно.

Значение факториала для 5

Получили значение 120. Проверим:

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

Послесловие

Итак, мы написали две функции разными способами, которые выполняют решают одну и ту же задачу — вычисление значения факториала. Эта задача входит в список с решениями задач по программированию, если вам нужно решить еще задачу — загляните туда, возможно вы найдете нужное решение. Если остались вопросы, то задавайте их в комментариях.

Для вас это может быть интересно:

Программа для решения факториала на C++ : 5 комментариев

Очень полезная статья, сразу все стало понятно))Спасибо!

Я написал нечто подобное на обычном Си но столкнулся с проблемой программа корректно высчитывает факториал только до 12, можете помочь ее решить ? может дело в том что лимит значений был превышен ?

int n_factorial(int n);

n_factorial(int n)

Найти сумму 10 членов ряда, в котором an=(n!)/n2.

В качестве проекта необходимо написать программу для нахождения разности факториалов наименьшего и наибольшего чисел из N введенных с использованием структур языка JavaScript.

Вводится N(в данном случае 5) чисел: 1,2,3,4,5;

Находится наибольшее и наименьшее из них: 5 и 1 соответственно;

Вычисляется разность факториалов наименьшего и наибольшего чисел из N введенных: 1!-5!=-119

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

В качестве проекта необходимо написать программу для нахождения разности факториалов наименьшего и наибольшего чисел из N введенных с использованием структур языка JavaScript.

Вводится N(в данном случае 5) чисел: 1,2,3,4,5;

Находится наибольшее и наименьшее из них: 5 и 1 соответственно;

Вычисляется разность факториалов наименьшего и наибольшего чисел из N введенных: 1!-5!=-119

Требования к выполнению проекта: наличие написанной функции, циклов и условий. Помогите пожалуйста!!

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

📎📎📎📎📎📎📎📎📎📎