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

факториал (2k+1)!с++ - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.95
Ирина123
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 28
20.09.2011, 21:30     факториал (2k+1)!с++ #1
помогите пожалуйста посчитать факториал (2k+1)!
и если возможно с построчными комментариями

заранее спасибо!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2011, 21:30     факториал (2k+1)!с++
Посмотрите здесь:

C++ факториал
C++ Факториал (n-1)!
факториал в с++ C++
C++ Факториал
C++ Факториал Си
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
20.09.2011, 21:36     факториал (2k+1)!с++ #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Ирина123,

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;
 
int main()
{
    int k;
 
    cout << "> ";
    cin >> k;
 
    // число очень большого диапазона
    unsigned long long factorial = 1;
 
    // вычисляем факториал
    for( int i = 1; i <= (k*2 + 1); i++ )
       factorial *= i;
 
    // выводим
    cout << "Factorial (2 * " << k << " + 1) = " << factorial << '\n';
 
    return 0;
}
Что непонятно - спрашивайте.
-=ЮрА=-
Заблокирован
Автор FAQ
21.09.2011, 10:30     факториал (2k+1)!с++ #3
Цитата Сообщение от Ирина123 Посмотреть сообщение
помогите пожалуйста посчитать факториал (2k+1)!
и если возможно с построчными комментариями
- вот 2 способа (рекурсия и вычисления в цикле)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>//i/o
#include <conio.h>  //getch
 
using namespace std;
 
 
//Руссификация
ostream& operator<<(ostream &stream,char* s){
        for(char* ps=s; *ps; ps++){
                if(*ps=='ё')
                        stream<<char(241);
                else if(*ps=='Ё')
                        stream<<char(240);
                else if(*ps>=-64 && *ps<=-17)                   
                        stream<<char(*ps+64+128);
                else if(*ps<0)
                        stream<<char(*ps+64+176);
                else
                        stream<<*ps;
        }
        return stream;
}
 
unsigned long factorial(unsigned long val);
unsigned long factorial2(unsigned long val);
 
int main()
{
    unsigned long N;
    do
    {
        std::cout<<"Введите число : ";
        std::cin>>N;
        std::cout<<N<<"! = "<<factorial(N)<<"\r\n";
        std::cout<<"Вычисление факториала без рекурсии : ";
        std::cout<<N<<"! = "<<factorial2(N)<<"\r\n";
        std::cout<<"Нажмите Y для нового ввода\r\n";
    }
    while(toupper(getch()) == 'Y');
    return 0;
}
 
unsigned long factorial(unsigned long val)
{
    unsigned long ret = val;
    if(1 < (val--))//Рекурсия
        ret *= factorial(val);
    return ret;
}
 
unsigned long factorial2(unsigned long val)
{
    unsigned long ret = val;
    for(long i = 1; i < val; i++)
        ret *= i;
    return ret;
}
GoriZonTT
Сообщений: n/a
21.09.2011, 18:27     факториал (2k+1)!с++ #4
Как вариант еще сделать по аналогии нахождения обычного факториала. Только с вашим (2k+1).

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
 
using namespace std;
 
int main()
{
    int i,f,n, k; // здесь i выполняет функцию счетчика, f - значение факториала,
                //n - от какого числа находим факториал, k - используется в формуле
                //для нахождения числа, от которого находим факториал
    f=1; // начальное значение факториала равно 1
    cin >> k; // вводим k для того, чтобы подставить в формулу
    n = 2*k+1; // находим n - число от которого ищем факториал
                //(в вашем случае факториал от числа: 2*k+1)
    if (n<=0) cout << "N Error"; // если найденное по формуле выше n<=0
                                //факториал не ищется и выводим ошибку
    else //в ином случае
    {for (i=1; i<=n; i++)//в цикле от i=1 до n равное 2*k+1 выполняем
    {
        f=f*i;       //умножаем значение факториала в цикле на значение i
    }                //Увеличивается i (i++ - инкремент, аналог i=i+1).
                    //Цикл повторяется пока i не станет равным числу n
    cout << f; //вывод полученного результата
    }
    return 0;
}
Иначе говоря если вы замените
C++
1
2
 cin >> k;
n = 2*k+1;
на
C++
1
cin >> n;
то будет находиться просто факториал от числа n. Ничего особенного, просто еще один вариант нахождения. Удачи!
Yandex
Объявления
21.09.2011, 18:27     факториал (2k+1)!с++
Ответ Создать тему
Опции темы

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