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

Факториал - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.64
MarchZM
0 / 0 / 0
Регистрация: 18.09.2010
Сообщений: 52
22.09.2010, 18:15     Факториал #1
Помогите написать программу:
Составить функцию, которая вычисляет сумму К слагаемых. В вызывающей функции main() организовать контроль ввода положительного целого K, большего 0. Через do... while или while или for
--------------
В знаменателе 2n-1, а что делать со степенью x и меняющимися знаками??
Изображения
 
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2010, 18:15     Факториал
Посмотрите здесь:

C++ факториал
C++ Факториал (n-1)!
факториал в с++ C++
C++ Факториал
C++ Факториал Си
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
30.09.2010, 22:57     Факториал #21
Так получается, нужна действительно рекуррентная, а не рекурсивная формула... Потому что я действительно не могу понять, как тут построить рекурсивную функцию... Или, может, тупею)))

Не по теме:

KuKu,
Рад, что мы пришли к соглашению)))

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MarchZM
0 / 0 / 0
Регистрация: 18.09.2010
Сообщений: 52
01.10.2010, 08:40  [ТС]     Факториал #22
silent_1991, я тоже не понимаю, она тригонометрическая, а в задаче этого не сказано плюс там X в степени меняется строго с шагом = 2
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
01.10.2010, 13:22     Факториал #23
MarchZM,
Вопрос номер раз: Кто тригонометрический?
Вопрос номер два раза: Чего не сказано в задаче?
Вопрос номер три раза: Что значит икс в степени меняется строго с шагом два? Степень меняется не с шагом два. А икс вообще фиксированный и задаётся с клавиатуры.
В общем, ваш пост вызывает у меня сплошные вопросы...
MarchZM
0 / 0 / 0
Регистрация: 18.09.2010
Сообщений: 52
01.10.2010, 15:30  [ТС]     Факториал #24
silent_1991, я про реккурентную формулу, не про задание =)
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
01.10.2010, 15:53     Факториал #25
Рекуррентная формула не обязана быть тригонометрической, и в ней не обязан меняться икс. Рекуррентная формула, это такая формула, которая позволяет вычислить очередной член ряда на основе уже вычисленных предыдущих.
MarchZM
0 / 0 / 0
Регистрация: 18.09.2010
Сообщений: 52
01.10.2010, 15:59  [ТС]     Факториал #26
http://twcad.ifmo.ru/?rub=riad не знаю вот отсюда я понял про неё, подойдёт ли она для моего задания?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
01.10.2010, 16:00     Факториал #27
По ссылке - пример, как найти рекуррентную формулу на основе заданного ряда. Вам нужно искать свою формулу, так как ряд у вас, естественно, другой.
MarchZM
0 / 0 / 0
Регистрация: 18.09.2010
Сообщений: 52
01.10.2010, 16:07  [ТС]     Факториал #28
лучшее что я нашёл это ряд Тейлора, но там степени меняются с определённым шагом, и знаки постоянно чередуются, а у меня не так...
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
01.10.2010, 16:23     Факториал #29
Я бы предложил группировать слагаемые парами. Первая пара - первый член ряда, вторая пара - второй член и т.д. Тогда и шаг степени будет постоянен, и знаки будут постоянно чередоваться.
MarchZM
0 / 0 / 0
Регистрация: 18.09.2010
Сообщений: 52
01.10.2010, 16:26  [ТС]     Факториал #30
тогда опять две функции будет? может быть препод ошибся? мне кажется не получиться решить через рекуррентную формулу...
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,946
01.10.2010, 19:39     Факториал #31
MarchZM, а чем не понравилось соотношение в моем предыдущем посте ?)
MarchZM
0 / 0 / 0
Регистрация: 18.09.2010
Сообщений: 52
01.10.2010, 19:53  [ТС]     Факториал #32
KuKu, ну она настаивала именно на рекуррентной формуле, про факториал она даже не говорила...
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,946
01.10.2010, 20:02     Факториал #33
ммм ... а что вы имеете ввиду под рекуррентной формуле ?) По мне так это последующий член выражается через предыдущие, и не имеет разницы, что выражать - факториал или что то еще. Напиши пример, что хочешь увидеть.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
01.10.2010, 20:38     Факториал #34
KuKu,
ИМХО, человек сам не знает, чего хочет.

MarchZM,
Вы или уточните у преподавателя, чего ему от вас надо, или уточните у себя, что вы подразумеваете под рекуррентной формулой... А потом уж к нам.
MarchZM
0 / 0 / 0
Регистрация: 18.09.2010
Сообщений: 52
01.10.2010, 23:09  [ТС]     Факториал #35
в общем, она мне сказала что эта прога решается через рекуррентность. с этим понятием никогда не сталкивался, в нете всё перерыл, не знаю что делать
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
02.10.2010, 06:33     Факториал #36
MarchZM, рекуррентная формула, с примерами, все ясно расписано

Цитата Сообщение от MarchZM Посмотреть сообщение
в общем, она мне сказала что эта прога решается через рекуррентность
я думаю, здесь она имела в виду, что для вычисления факториала числа n не нужно перемножать все натуральные числа от 1 до n, а использовать вычисленное на предыдущем шаге значение (n - 2)!, таким образом, n! = n * (n - 1) * (n - 2)!.
Посмотри внимательно, у тебя сначала вычисляется 1!, потом 3!, потом 5! и т.д. Можно считать знаменатели так:
Код
1! = 1
3! = 1 * 2 * 3
5! = 1 * 2 * 3 * 4 * 5
.............................
(2n + 1)! = 1 * 2 * 3 * ... * 2n * (2n + 1)
А можно просто сохранять предыдущий знаменатель и на его основе вычислять новый (кстати, то же самое хорошо бы сделать и с вычислением числителя). Алгоритм:
C++
1
2
3
4
5
6
7
8
9
10
int last_denom = 1;
int i = 1;
for(int j = 1; j <= k; i = j, j+=2)
{
    int denom = last_denom;
    for(int t = i + 1; t <= j; ++t)
        denom *= t;
    //...
    last_denom = denom;
}
Сравни, какой из вариантов эффективнее, и поймешь, почему преподаватель требует от тебя именно "через рекуррентность". Так что выносить вычисление факториала в отдельную процедуру нет смысла.
PS. Все тему не читал, так что извиняюсь, если повторил чей-то пост
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2012, 14:24     Факториал
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
maxick96
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 41
02.11.2012, 14:24     Факториал #37
мне училка задала такой вопрос
вводишь K=2,X=2
потом K=3 X=2
потом K=4 X=2
почему когда вводишь k=4 ответ меньше чем когда ты вводишь k=3?
Yandex
Объявления
02.11.2012, 14:24     Факториал
Ответ Создать тему
Опции темы

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