Как написать факториал на клавиатуре
Решить данную задачу можно несколькими способами, мы рассмотрим рекурсивное вычисление факториала и циклическое.
Компилируем, запускаем и вводим любую 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) int res=1;
for(int sucl=1; sucl<=n; sucl++) res=sucl*res;
>
return res;
>
Найти сумму 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 для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Читайте также: