Вопрос по информатике:
Вводится натуральное число N. Программа должна найти факториал (обозначается как N!) – произведение всех натуральных чисел от 1 до N. Например, 5! = 1 · 2 · 3 · 4 · 5 = 120. Пример: Введите число: 5 5!=120.
Написать через программу Python
Трудности с пониманием предмета? Готовишься к экзаменам, ОГЭ или ЕГЭ?
Воспользуйся формой подбора репетитора и занимайся онлайн. Пробный урок — бесплатно!
- bookmark_border
- 11.12.2017 00:38
- Информатика
- remove_red_eye 11473
- thumb_up 29
Ответы и объяснения 1
lytitlengni887
Def fact(n):
if (n==0):
return 1
else:
return n*fact(n — 1)
x = int ( input («Введите число: «) )
y = fact(x)
print(«<>! = <>».format(x, y))
- 12.12.2017 17:12
- thumb_up 50
Знаете ответ? Поделитесь им!
Как написать хороший ответ?
Чтобы добавить хороший ответ необходимо:
41 Рекурсия в Python. Рекурсивная функция Часть 1
- Отвечать достоверно на те вопросы, на которые знаете правильный ответ;
- Писать подробно, чтобы ответ был исчерпывающий и не побуждал на дополнительные вопросы к нему;
- Писать без грамматических, орфографических и пунктуационных ошибок.
Этого делать не стоит:
- Копировать ответы со сторонних ресурсов. Хорошо ценятся уникальные и личные объяснения;
- Отвечать не по сути: «Подумай сам(а)», «Легкотня», «Не знаю» и так далее;
- Использовать мат — это неуважительно по отношению к пользователям;
- Писать в ВЕРХНЕМ РЕГИСТРЕ.
Есть сомнения?
Не нашли подходящего ответа на вопрос или ответ отсутствует? Воспользуйтесь поиском по сайту, чтобы найти все ответы на похожие вопросы в разделе Информатика.
Трудности с домашними заданиями? Не стесняйтесь попросить о помощи — смело задавайте вопросы!
Информатика — наука о методах и процессах сбора, хранения, обработки, передачи, анализа и оценки информации с применением компьютерных технологий, обеспечивающих возможность её использования для принятия решений.
Источник: online-otvet.ru
Программа для решения факториала на C++
Написать программу на C++ для вычисления(нахождения или решения) факториала — это очень популярное задание в сборниках по обучению программированию. Решение этой задачи и многих других размещено в разделе с решениями задач по программированию на C++. В данной статье мы разберем как реализовать решение на языке программирования C++.
Для начала — что такое факториал?
Факториал — это произведение всех натуральных чисел от 1 до N включительно. То есть, если N = 5, то значение факториала
Что такое факториал | Математика
Решить данную задачу можно несколькими способами, мы рассмотрим рекурсивное вычисление факториала и циклическое.
До начала вычислений необходимо узнать N. N может быть больше или равно единице (N>=0). Поэтому для начала напишем каркас приложения, которое будет получать значение N и проверять его. Если N не соответствует, то программа выдаст ошибку «Error: N < 0.«. Листинг программы следующий:
#include using namespace std; int main() < int N; // Объявляем переменную N целочисленного типа cout > N; // Присваиваем введенное значение в переменную if(N >= 0) < // Здесь будет код, вычислящий факториал >else < cout return 0; >
Компилируем, запускаем и вводим любую N, которая меньше 0.
Получили ошибку, программа сообщила, что N < 0.
Запускаем и вводим любую N, которая больше или равно 0.
Программа ничего не вывела после, значит выполнился участок кода, где написано «Здесь будет код…«.
Теперь нам достаточно вставить в место, где написано «Здесь будет код…» нужную реализацию алгоритма по нахождению факториала.
Нахождение факториала с помощью цикла
Для нахождения факториала напишем свою функцию, которая будет принимать значение N и возвращать результат.
Реализовать алгоритм нахождения факториала очень просто:
int factorial(int N) < int F = 1; for(int i=1; ireturn F; // Возвращаем ответ >
Что делает функция? Принимает значение 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.
Вставляем функцию в нашу программу:
#include using namespace std; //Начало функции нахождения факториала int factorial(int N) < int F = 1; for(int i=1; ireturn F; > //Конец функции нахождения факториала int main() < int N; cout > N; if(N >= 0) < cout else < cout return 0; >
Теперь проверим работу программы, для этого скомпилируем, запустим и попробуем ввести различные значения.
Пусть найдет факториал от 0
Получили значение 1. Мы знаем, что факториал от 0 равен единице, здесь программа работает верно.
Пусть найдет факториал от 1
Получили значение 1. Мы знаем, что факториал от 1 равен единице, здесь программа тоже работает верно.
Пусть найдет факториал от 5
Получили значение 120. Проверим: F = 1*2*3*4*5 = 120. Программа верно вычислила факториал.
Рекурсивное нахождение факториала
Для такого способа мы тоже напишем функцию, но она не будет содержать цикла. Рекурсивная функция — это функция, которая вызывает сама себя.
Наша функция factorial() будет принимать значение N и возвращать N*factorial(N-1). То есть будет возвращать значение N умноженное на саму себя, но только с N-1.
Код реализации рекурсивной функции нахождения факториала
int factorial(int N) < if(N==0) return 1; // Если factorial(0), то возвращаем 1 if(N==1) return 1; // Если factorial(1), то возвращаем 1 return N*factorial(N-1); // А если нет, то возвращаем значение N*factorial(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.
Вставим рекурсивную функцию в программу для нахождения факториала:
#include using namespace std; // Начало рекурсивной функции нахождения факториала int factorial(int N) < if(N==0) return 1; if(N==1) return 1; return N*factorial(N-1); >// Конец функции int main() < int N; cout > N; if(N >= 0) < cout else < cout return 0; >
Компилируем, запускаем и проверяем.
Значение факториала для 0
Вывела 1, а мы знаем, что факториал от 0 равен 1. Значит работает верно.
Значение факториала для 1
Вывела 1, а мы знаем, что факториал от 1 равен 1. Значит работает верно.
Значение факториала для 5
Получили значение 120. Проверим:
Программа верно вычислила факториал.
Послесловие
Итак, мы написали две функции разными способами, которые выполняют решают одну и ту же задачу — вычисление значения факториала. Эта задача входит в список с решениями задач по программированию, если вам нужно решить еще задачу — загляните туда, возможно вы найдете нужное решение. Если остались вопросы, то задавайте их в комментариях.
Для вас это может быть интересно:
Раздел: Алгоритмы Программирование Метки: C++, вычисление, код, программирование, факториал, функция
Программа для решения факториала на C++ : 5 комментариев
- Оксана 27.07.2017 Очень полезная статья, сразу все стало понятно))Спасибо!
Источник: nicknixer.ru