Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Fanat35
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 7
1

Для заданного натурального n вычислить n!!

27.01.2014, 18:25. Просмотров 996. Ответов 15
Метки нет (Все метки)

Пусть n натуральное число и пусть n !! означает 1*3*5*7*.....*n для нечетного n и 2*4*6*8*.....*n для четного n. Для заданного натурального n вычислить n!!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2014, 18:25
Ответы с готовыми решениями:

Для заданного натурального n вычислить
Для заданого натурального n обчислити S = 1 + 1*2 + 1*2*3 + … + 1*2* …*n ....

Для заданного натурального n вычислить 1 +3+5 +7 +…+2n-1
Для заданного натурального n вычислить 1 +3+5 +7 +…+2n-1

Для заданного натурального к и действительного х вычислить сумму ряда
Помогите пожалуйста. Для заданного натурального к и действительного х...

Для заданного натурального числа N вычислить и вывести на экран
Подскажи как решать это задание пожалуйста. ил ихотябы объясните что означают...

Для заданного натурального числа n и действительных чисел x0 и A вычислить Xn, по итерационной формуле:
xi+1=xi+1/3((A/xi^2)-xi)

15
cooller
565 / 533 / 280
Регистрация: 25.12.2013
Сообщений: 1,456
27.01.2014, 18:37 2
Fanat35, Если я правильно понял
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
int factorial(int n)
{
    if(n>2)
        return n>2?1:n*factorial(n-2);
}
int main()
{
    int number;
    std::cin>>number;
    std::cout<<factorial(number);
}
0
Тамика
Котовчанин
921 / 465 / 196
Регистрация: 16.02.2010
Сообщений: 3,284
Записей в блоге: 29
27.01.2014, 18:41 3
Цитата Сообщение от cooller_94 Посмотреть сообщение
if(n>2)
* * * * return n>2?1:n*factorial(n-2);
не совсем понятно - а зачем Вы два раза условие проверяете? if будет работать, если условие n>2 правда. Потом Вы снова тернарным оператором проверяете - если n>2,то делаем то, если нет - то другое. Это странно, так как если бы n>2 было false, то оно попросту не вошло бы в иф. Думаю эта строка не имеет смысл. Ее можно упростить просто оставив n*factorial(n-2);
0
ValeryS
Модератор
7317 / 5559 / 704
Регистрация: 14.02.2011
Сообщений: 18,860
27.01.2014, 18:44 4
Цитата Сообщение от cooller_94 Посмотреть сообщение
if(n>2)
* * * * return n>2?1:n*factorial(n-2);
переведи
C++
1
2
3
int fct=1;
for(int i=n;i>0;i-=2);
     fct*=i;
C++
1
2
3
int fct=1;
for(int i=n%2+2;i<=n;i+=2)
       fct*=i;
0
cooller
565 / 533 / 280
Регистрация: 25.12.2013
Сообщений: 1,456
27.01.2014, 18:44 5
Тамика, тупанул. Сделал двумя версиями, но забыл удалить лишнее(
Вот
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
int factorial(int n)
{
        if(n>2)
            return n*factorial(n-2);
 
}
int main()
{
    int number;
    std::cin>>number;
    std::cout<<factorial(number);
}
0
ValeryS
Модератор
7317 / 5559 / 704
Регистрация: 14.02.2011
Сообщений: 18,860
27.01.2014, 18:46 6
Цитата Сообщение от cooller_94 Посмотреть сообщение
int factorial(int n)
{
* * * * if(n>2)
* * * * * * return n*factorial(n-2);
}
а если меньше двух ? что возвращать будем?
0
cooller
565 / 533 / 280
Регистрация: 25.12.2013
Сообщений: 1,456
27.01.2014, 18:51 7
Цитата Сообщение от ValeryS Посмотреть сообщение
а если меньше двух ? что возвращать будем?
да уж, чет туплю сегодня(
0
Тамика
Котовчанин
921 / 465 / 196
Регистрация: 16.02.2010
Сообщений: 3,284
Записей в блоге: 29
27.01.2014, 18:54 8
А такое?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
int factorial(int n)
{
 
    for (int i = n - 2; i > 1; --i)
 
        n *= i;
 
    return (n == 0) ? 1 : n;
}
 
int main()
{
    int number;
    std::cin>>number;
    std::cout<<factorial(number);
}
0
Fanat35
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 7
27.01.2014, 18:59  [ТС] 9
Ребят. Я не знаю, каким должен быть код! Вы уж подскажите наиболее правильный!!
0
Тамика
Котовчанин
921 / 465 / 196
Регистрация: 16.02.2010
Сообщений: 3,284
Записей в блоге: 29
27.01.2014, 19:00 10
Лучший ответ Сообщение было отмечено Fanat35 как решение

Решение

Цитата Сообщение от Fanat35 Посмотреть сообщение
Ребят. Я не знаю, каким должен быть код! Вы уж подскажите наиболее правильный!!
Мой работает вроде.) Проверила на разных числах. Пробуйте.
1
Fanat35
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 7
27.01.2014, 19:06  [ТС] 11
Цитата Сообщение от Тамика Посмотреть сообщение
Мой работает точно. Проверила на разных числах. Пробуйте.
Хорошо! Спасибо! Премного благодарен!!

Добавлено через 2 минуты
Хорошо! Спасибо! Премного благодарен!
0
ValeryS
Модератор
7317 / 5559 / 704
Регистрация: 14.02.2011
Сообщений: 18,860
27.01.2014, 19:07 12
Цитата Сообщение от Тамика Посмотреть сообщение
Мой работает точно.
давай проверим n=6
for (int i = n - 2; i > 1; --i)
i=4
n *= i;
6*4=24
for (int i = n - 2; i > 1; --i)
i=3!!!!
24*3!!!=72
0
Тамика
Котовчанин
921 / 465 / 196
Регистрация: 16.02.2010
Сообщений: 3,284
Записей в блоге: 29
27.01.2014, 19:10 13
Цитата Сообщение от ValeryS Посмотреть сообщение
давай проверим n=6
for (int i = n - 2; i > 1; --i)
i=4
n *= i;
6*4=24
for (int i = n - 2; i > 1; --i)
i=3!!!!
24*3!!!=72
Да-да, я тут маленько поменяла и получилась лажа.

Добавлено через 2 минуты
Цитата Сообщение от Fanat35 Посмотреть сообщение
Хорошо! Спасибо! Премного благодарен!!

Добавлено через 2 минуты
Хорошо! Спасибо! Премного благодарен!
Обождите. Там бага.
0
ValeryS
Модератор
7317 / 5559 / 704
Регистрация: 14.02.2011
Сообщений: 18,860
27.01.2014, 19:11 14
Тамика,
посмотри на мои " клише" там два варианта умножения от максимума к минимуму и наоборот
может пригодится
если непонятно спрашивай
1
Тамика
Котовчанин
921 / 465 / 196
Регистрация: 16.02.2010
Сообщений: 3,284
Записей в блоге: 29
27.01.2014, 19:15 15
Блин.
0
frax007
0 / 0 / 0
Регистрация: 12.03.2014
Сообщений: 13
15.03.2014, 11:53 16
так и не доделали программу?
0
15.03.2014, 11:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2014, 11:53

Нахождение наименьшего нечетного натурального делителя k (k≠1) любого заданного натурального числа n
Помогите с этой задачой: Подпрограммы Составить функцию для нахождения...

Для заданного четного числа вычислить сумму, для нечетного произведение чисел от 1 до заданного
c++ дано число вводится с клавиатуры, если оно четное, то ввести сумму с 1 до...

Для заданного натурального n и действительного х подсчитать суммы
Для заданного натурального n и действительного х подсчитать суммы:...


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

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

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