Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 144, средняя оценка - 4.72
z1
0 / 0 / 0
Регистрация: 27.09.2009
Сообщений: 25
#1

Нахождение факториала рекурсией - C++

26.11.2009, 23:24. Просмотров 20331. Ответов 8
Метки нет (Все метки)

помогите написать программу для нахождения n факториала рекурсивным методом
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2009, 23:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нахождение факториала рекурсией (C++):

Вычисление факториала циклом и рекурсией - C++
Помогите с вычислением выражения: S=(1/1!)+(1/2!)+...+(1/k!) C++, циклом и рекурсией.

Подсчет факториала рекурсией(код в нутри). - C++
надо подсчитать факториал рекусией, но так как в программе(что бы переменную nможно было использовать не только в рекурсии) #include...

Нахождение факториала - C++
#include <iostream> #include <iomanip> #include <conio.h> using namespace std; unsigned long factroial(unsigned long); int...

нахождение факториала - C++
Вот, написал программу, но почему-то ответ неправильный постоянно выходит, подскажите, что я делаю не так? #include <iostream> ...

Циклическое нахождение факториала - C++
Здравствуйте. Дело в том, что почему то значение факториала складывается со значением предыдущего факториала. В чем ошибка? #include...

Нахождение факториала без рекусрсии - C++
Дайте код на функцию, которая находит факториал числа определенного(которое она берет в аргумент)

8
Rififi
2360 / 1053 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
26.11.2009, 23:29 #2
C++
1
2
3
4
long fuck(long n)
{
   return n > 0 ? n * fuck(n - 1) : 1;
}
0
lydra
12 / 12 / 2
Регистрация: 11.05.2009
Сообщений: 24
26.11.2009, 23:29 #3
C++
1
2
3
int factorial(int n) {
if(n==1) return 1;
return n* factorial (n-1); }
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
27.11.2009, 12:13 #4
2lydra: факториал от 0 как известно равен 1 ( o! == 1 ).
Твой код неправильно считает factorial( 0 ).
1
lydra
12 / 12 / 2
Регистрация: 11.05.2009
Сообщений: 24
27.11.2009, 14:49 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
odip, да, ты прав. видно поспешил написать. надо было так:
C++
1
2
3
4
5
int factorial(int n)
 {
  if(n==1 || n==0) return 1;
   return n* factorial (n-1);
 }
4
z1
0 / 0 / 0
Регистрация: 27.09.2009
Сообщений: 25
03.12.2009, 21:29  [ТС] #6
а объясните кто нибудь почему мы возвращаем именно такое значение?
0
Nikolay__
0 / 0 / 0
Регистрация: 17.02.2013
Сообщений: 3
30.03.2013, 20:32 #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<iostream>
using namespace std;
void long long factorial(int x);//Прототип рекурсивной функции факториала
int main()
{
int x;
cout<<"Enter number please: \n";//Предложения на ввод числа
cin>>x; //ввод числа
factorial(x);//Вычисления рекурсивного факториала числа
return 0;
}
void long long factorial (int x) //Определения функции рекурсивного факториала
{
long long n=1;
for(int i=2; i<x+2;i++)
{
n=n*(i-1);
}
cout<<x<<"!"<<"= "<<n<<" \n";
if (x>0)
factorial(x-1);//Рекурсия
cout<<x<<"!"<<"= "<<n<<"\n";
}
0
solomon123
0 / 0 / 0
Регистрация: 25.01.2013
Сообщений: 18
23.04.2013, 00:48 #8
ребята, а если возвращать n вместо 1, это будет менее правильный вариант? Сегодня просто тесты писала и возвращала я там 1. Как думаете?

C++
1
2
3
int factorial(int n) {
if(n==1) return n;
return n* factorial (n-1); }
0
0x0152
31 / 31 / 8
Регистрация: 23.03.2015
Сообщений: 210
10.04.2016, 18:34 #9
Цитата Сообщение от solomon123 Посмотреть сообщение
ребята, а если возвращать n вместо 1, это будет менее правильный вариант? Сегодня просто тесты писала и возвращала я там 1. Как думаете?
Цитата Сообщение от solomon123 Посмотреть сообщение
if(n==1) return n;
Если n равна единице, то вернуть n т.е условие выполняется только если n равна единице, поэтому нету ни какой разницы

PS Еще необходимо сделать проверку на n <= 0,(по случайности запишите отрицательное число и функция уйдет в бесконечную рекурсию, попробуй потом найти ошибку)
0
10.04.2016, 18:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2016, 18:34
Привет! Вот еще темы с ответами:

Нахождение двойного факториала заданного числа N - C++
Дано целое число N (&gt; 0). Найти двойной факториал N: N!! = N·(N–2)·(N–4)·… (последний сомножитель равен 2, если N — четное, и 1, если N...

C++ нахождение факториала числа n с вводом из файла - C++
Здравствуйте! В общем мне нужно написать программку, которая считала бы факториал числа n типа int и чтобы число для расчета бралось из...

Нахождение факториала: для заданного N найти последнюю отличную от нуля цифру - C++
Факториалом натурального числа N (обозначается как N!) называется произведение всех натуральных чисел от 1 до N. Например, 5! = 1*2*3*4*5 =...

Описать рекурсивные функции вычисляющие значения факториала и двойного факториала - C++
Написать блок схему и программу согласно заданию. Описать рекурсивные функции Fact(n) и Fact2(N) вещественного типа, вычисляющие значения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.