Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 144, средняя оценка - 4.72
z1
0 / 0 / 0
Регистрация: 27.09.2009
Сообщений: 25
26.11.2009, 23:24     Нахождение факториала рекурсией #1
помогите написать программу для нахождения n факториала рекурсивным методом
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rififi
 Аватар для Rififi
2330 / 1045 / 43
Регистрация: 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;
}
lydra
 Аватар для 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); }
odip
Эксперт C++
 Аватар для odip
7225 / 3287 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
27.11.2009, 12:13     Нахождение факториала рекурсией #4
2lydra: факториал от 0 как известно равен 1 ( o! == 1 ).
Твой код неправильно считает factorial( 0 ).
lydra
 Аватар для 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);
 }
z1
0 / 0 / 0
Регистрация: 27.09.2009
Сообщений: 25
03.12.2009, 21:29  [ТС]     Нахождение факториала рекурсией #6
а объясните кто нибудь почему мы возвращаем именно такое значение?
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";
}
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); }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2016, 18:34     Нахождение факториала рекурсией
Еще ссылки по теме:

C++ C++ нахождение факториала числа n с вводом из файла
Нахождение двойного факториала заданного числа N C++
Циклическое нахождение факториала C++

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

Или воспользуйтесь поиском по форуму:
0x0152
31 / 31 / 8
Регистрация: 23.03.2015
Сообщений: 205
10.04.2016, 18:34     Нахождение факториала рекурсией #9
Цитата Сообщение от solomon123 Посмотреть сообщение
ребята, а если возвращать n вместо 1, это будет менее правильный вариант? Сегодня просто тесты писала и возвращала я там 1. Как думаете?
Цитата Сообщение от solomon123 Посмотреть сообщение
if(n==1) return n;
Если n равна единице, то вернуть n т.е условие выполняется только если n равна единице, поэтому нету ни какой разницы

PS Еще необходимо сделать проверку на n <= 0,(по случайности запишите отрицательное число и функция уйдет в бесконечную рекурсию, попробуй потом найти ошибку)
Yandex
Объявления
10.04.2016, 18:34     Нахождение факториала рекурсией
Ответ Создать тему
Опции темы

Текущее время: 03:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru