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

факториал в С++ - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 51, средняя оценка - 4.92
generation472
 Аватар для generation472
19 / 19 / 2
Регистрация: 04.11.2011
Сообщений: 543
Записей в блоге: 1
12.02.2012, 11:36     факториал в С++ #1
Как найти факториал с помощью рекурсивной функции?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2012, 11:36     факториал в С++
Посмотрите здесь:

C++ факториал
C++ Факториал (n-1)!
факториал в с++ C++
C++ Факториал
C++ Факториал Си
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vladislavchick
35 / 35 / 1
Регистрация: 22.05.2010
Сообщений: 107
12.02.2012, 11:38     факториал в С++ #2
C++
1
2
3
4
unsigned long fact(int x) {
    if (x == 0) return 1;
    return x * fact(x - 1);
}
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
12.02.2012, 11:39     факториал в С++ #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
 
long Factorial (int n)
{
    if (n==0) return 1;
    else return Factorial(n-1)*n;
}
 
int main()
{
    int n;
    std:: cin >> n;
    std:: cout << Factorial(n) << "\n";
    system ("pause");
    return 0;
}
generation472
 Аватар для generation472
19 / 19 / 2
Регистрация: 04.11.2011
Сообщений: 543
Записей в блоге: 1
12.02.2012, 11:41  [ТС]     факториал в С++ #4
ого спс за быстрый ответ
агерон
 Аватар для агерон
265 / 264 / 33
Регистрация: 12.10.2009
Сообщений: 1,031
12.02.2012, 12:18     факториал в С++ #5
бесконечный стек только у господа бога, рекурсию нужно использовать с умом не забывай
-=ЮрА=-
Заблокирован
Автор FAQ
12.02.2012, 12:36     факториал в С++ #6
Цитата Сообщение от generation472 Посмотреть сообщение
Как найти факториал с помощью рекурсивной функции?
- вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
 
unsigned long fact(unsigned long val)
{
    unsigned long ret = val;
    if(0 < (val = val - 1))
        ret *= fact(val);
    return ret;
}
 
int main()
{
    unsigned long num;
    while(true)
    {
        cout<<"Enter num  : ";
        cin>>num;
        cout<<"Recurs fact: "<<fact(num)<<endl;
    }
    return 0;
}
И никаких 2 точек выхода в рекурсивной функции, как у всех в данном топике
Миниатюры
факториал в С++  
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,309
12.02.2012, 12:50     факториал в С++ #7
Только нужна небольшая модификация:
C++
1
2
3
4
5
6
7
unsigned long fact(unsigned long val)
{
        unsigned long ret = val ? val : 1;
        if(0 < val && 0 < (val = val - 1))
                ret *= fact(val);
        return ret;
}
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
12.02.2012, 12:57     факториал в С++ #8
Цитата Сообщение от агерон Посмотреть сообщение
есконечный стек только у господа бога, рекурсию нужно использовать с умом не забывай
Факториал определён только для целых неотрицательных чисел.
-=ЮрА=-
12.02.2012, 13:00
  #9

Не по теме:

Цитата Сообщение от CheshireCat Посмотреть сообщение
if(0 < val
- CheshireCat, unsigned long не о чём не говорит???Например беззнаковое целое!Модификатор типа unsigned указывает, что переменная принимает неотрицательные значения если ты вдруг забыл...

CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,309
12.02.2012, 13:33     факториал в С++ #10
-=ЮрА=-, я ни о чем не забыл. А вот ты - явно забыл посчитать в твоем коде 0!. Попробуй ввести 0, увидишь результат.
Jupiter
12.02.2012, 13:52
  #11

Не по теме:

Цитата Сообщение от Dani Посмотреть сообщение
только для целых неотрицательных чисел.
ну это грубо сказано
http://www.wolframalpha.com/input/?i=%280.5%29%21

denys_l
51 / 51 / 4
Регистрация: 26.09.2011
Сообщений: 186
12.02.2012, 13:55     факториал в С++ #12
Цитата Сообщение от CheshireCat Посмотреть сообщение
-=ЮрА=-, я ни о чем не забыл. А вот ты - явно забыл посчитать в твоем коде 0!. Попробуй ввести 0, увидишь результат.
ага.. так и есть
Сtrl
 Аватар для Сtrl
138 / 128 / 3
Регистрация: 19.07.2011
Сообщений: 184
12.02.2012, 13:58     факториал в С++ #13
Зачем так усложнять?
C++
1
2
3
4
unsigned long fact(unsigned long n)
{
   return n ? n * fact(n - 1) : 1;
}
Dani
12.02.2012, 16:21
  #14

Не по теме:

Цитата Сообщение от Jupiter Посмотреть сообщение
Не по теме:
Сообщение от Dani
только для целых неотрицательных чисел.
ну это грубо сказано
http://www.wolframalpha.com/input/?i=%280.5%29%21
Ну там уже гамма функция А факториал - произведение ЦЕЛЫХ чисел от 1 до n, поэтому... Факториал - факториал, Гамма функция - гамма функция, но вещь интересная, спасибо за ссыль

go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
12.02.2012, 16:28     факториал в С++ #15
Цитата Сообщение от Jupiter Посмотреть сообщение
ну это грубо сказано
Нет. Так и есть
Факториал определён только для целых неотрицательных чисел.
http://ru.wikipedia.org/wiki/%D0%A4%...B8%D0%B0%D0%BB
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2012, 21:34     факториал в С++
Еще ссылки по теме:

C++ Факториал
факториал С++ C++
Факториал C++

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

Или воспользуйтесь поиском по форуму:
vladislavchick
35 / 35 / 1
Регистрация: 22.05.2010
Сообщений: 107
12.02.2012, 21:34     факториал в С++ #16
Точка выхода одна.
Yandex
Объявления
12.02.2012, 21:34     факториал в С++
Ответ Создать тему
Опции темы

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