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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.67
Ёрик
46 / 46 / 2
Регистрация: 07.01.2009
Сообщений: 298
#1

Ряды. Рекурсия - C++

08.08.2009, 08:50. Просмотров 2621. Ответов 13
Метки нет (Все метки)

В общем,у меня задача написать рекурсивно вычисление выражения exp(0.56*x+ln(x^2))
с помощью рядов. Нужно получить число просуммированных членов ряда,обеспечивающих вычисление исходной функции с задаваемой абсолютной или
относительной степенями точности. Формула у нас такая: http://myphoto.nnov.ru/thumb/1eecf3b...dc0ca747c1.jpg. А рекурсия вот откуда берется: вычислить обязательно нужно через реккурентное вычисление последущего члена через предыдущий.Вот соответственно выражение V_k через V_K+1:
http://myphoto.nnov.ru/thumb/a94eef8...76a0b5d70f.jpg.Но невозможно бесконечное суммирование ряда,поэтому вычисление с заданной степенью точности подразумевает критерий остановки процесса суммирования http://myphoto.nnov.ru/thumb/7d4da9f...9f362c4133.jpg соответственно для достижений заданных значения абсолютной и относительной точностей вычисления суммы ряда S_k на k-ом шаге.
Вот такое задание. Мне обязательно нужно сделать через рекурсию! Не могу определить терминальное условие выхода из рекурсивной функции,т.к. у нас еще здесь суммирование.Точнее получается,терминальное условие http://myphoto.nnov.ru/thumb/7d4da9f...9f362c4133.jpg.Но как тогда построить тело функции? Тут приходится проверять результат выполненной функции. Кстати, точность Q и переменную х мы вводим сами. Q может быть равно ,напр., 0.000001.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.08.2009, 08:50     Ряды. Рекурсия
Посмотрите здесь:

Ряды в С++ - C++
Найти сумму ряда с точностью E=10^-4, общий член которого An=(n!)/3(n^n) Знайти суму ряду з точністю E=10^-4, загальний член якого ...

ряды - C++
дано натуральное число n. Вычислить P=(1-1/2)*(1-1/4)*(1-1/6)...(1-1/2*n)

Ряды - C++
Для заданного ряда необходимо: 1) Найти сумму S1 для n первых элементов ряда (с использованием оператора FOR); 2) Найти сумму S2...

ряды в С++ - C++
помогите вот прога а при нажатии ctrl+F9 и вводе любой цифры выдается мусор вот прога: #include<iostream.h> #include<math.h> ...

ряды - C++
помогите плиз, как создать ряд из чисел кратных 7 ?

Ряды - C++
Помогите пожалуйста написать программу. Напишите программу, которая выводит на экран сообщение в "телеграфном" стиле: буквы сообщения...

ряды - C++
помогите плиз. нужно создать ряд s=1+1/4+1/9+1/25... по какой формуле это можно сделать?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
08.08.2009, 20:34     Ряды. Рекурсия #2
Запости картинки прямо в форум - в нем есть такая функция.
Ёрик
46 / 46 / 2
Регистрация: 07.01.2009
Сообщений: 298
08.08.2009, 20:52  [ТС]     Ряды. Рекурсия #3
У меня есть код,написанный в цикле,но мне по голове дали за него и сказали,что можно написать рекурсией:
Код:
C++
1
2
3
4
5
6
7
8
9
10
            k = 1;
            y3 = 1.0;
            v = 1.0;
 
            while( fabs(v/y3) >= eps)
            {
                v *=  (temp)/k;
                y3 += v;
                k++;
            }
Соответственно все переменные объявлены как double."temp" - это степень(я потом сам могу любую написать),"y3" - значение функции, "к" - шаг, "eps" - степень точности.
Все картинки загружал поочереди,как они идут в тексте.Затем последние 2 картинки повторяются,просто они обе не загружаются,и я выкладываю только одну.
p.s. Код правильный,только мне нужно переписать рекурсией(см выше)
Изображения
   
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
08.08.2009, 20:57     Ряды. Рекурсия #4
Все картинки загружал поочереди
Вроде ты можешь как автор отредактировать исходное сообщение

можно написать рекурсией
Это идиотизм. Если ты решил задачу без рекурсии - это нормально.
Рекурсия совершенно не лучше чем без нее.
Или препод хочет чтобы ты решил задачу именно с использованием рекурсии ?
M128K145
Эксперт С++
8283 / 3502 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
08.08.2009, 21:28     Ряды. Рекурсия #5
Как мне в универе обьяснял очень хороший препод - рекурсией можно решить любую задачу. Если задачу невозможно решить рекурсией - то эта задача нерешаемая. Но рекурсия - это всего лишь доказательство того, что задача имеет решение. Использование рекурсии оправдано всего в трех задачах(к сожалению я не помню в каких). Но я почему-то более чем уверен, что эта задача не входит в число тех трех
Ёрик
46 / 46 / 2
Регистрация: 07.01.2009
Сообщений: 298
09.08.2009, 10:53  [ТС]     Ряды. Рекурсия #6
Цитата Сообщение от odip Посмотреть сообщение
Вроде ты можешь как автор отредактировать исходное сообщение
Можно отредактировать,если сообщение создано не более 10 минут назад,а у меня уже полдня прошло.
Цитата Сообщение от odip Посмотреть сообщение
Или препод хочет чтобы ты решил задачу именно с использованием рекурсии?
Именно так
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
09.08.2009, 11:08     Ряды. Рекурсия #7
Цитата Сообщение от Ёрик Посмотреть сообщение
Код правильный,только мне нужно переписать рекурсией(см выше)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void fcn(double &v, double &y3, double eps, double power, int &k) {
  if (fabs(v / y3) < eps) return;
 
  v *= power / k;
  y3 += v;
  k++;
  
  fcn(v, y3, eps, power, k);
}
 
int main() {
  int k = 1;
  double y3 = 1.0;
  double v = 1.0;
  double eps = 0.000001;
  double power = 3;
 
  fcn(v, y3, eps, power, k);
}
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
09.08.2009, 11:40     Ряды. Рекурсия #8
Как мне в универе обьяснял очень хороший препод
А тебе препод не объяснял, что любую задачу решенную с помощью рекурсии можно решить и без рекурсии ?
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
09.08.2009, 11:43     Ряды. Рекурсия #9
Цитата Сообщение от odip Посмотреть сообщение
что любую задачу решенную с помощью рекурсии можно решить и без рекурсии ?
можно. но некоторые задачи элегантно(легче/быстрей/понятней) решаются именно с помощью рекурсивной реализации.
Ёрик
46 / 46 / 2
Регистрация: 07.01.2009
Сообщений: 298
09.08.2009, 12:11  [ТС]     Ряды. Рекурсия #10
zim22,спасибо,примерно так и предполагал,только не нравилось мне большое количество параметров,поэтому думал,что,возможно, как-н. без них можно обойтись.А вообще,как выглядит симпатичнее данный код?
M128K145
Эксперт С++
8283 / 3502 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
09.08.2009, 12:14     Ряды. Рекурсия #11
odip, читай дальше . Там написано, что решение с помощью рекурсии оправдано только в трех задачах
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
09.08.2009, 12:26     Ряды. Рекурсия #12
Цитата Сообщение от M128K145 Посмотреть сообщение
Там написано, что решение с помощью рекурсии оправдано только в трех задачах
мало ли что там написано. рекурсию нужно применять тогда, когда она уместна. а не в "3 задачах".
***
Цитата Сообщение от Ёрик Посмотреть сообщение
не нравилось мне большое количество параметров,поэтому думал,что,возможно, как-н. без них можно обойтись
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
namespace {
  int k = 1;
  double y3 = 1.0;
  double v = 1.0;
  double eps = 0.000001;
  double power = 3;
}
 
void do_some_work() {
  v *= power / k;
  y3 += v;
  k++;
}
void fcn() {
  if (fabs(v / y3) < eps) return;
 
  do_some_work();  
  fcn();
}
 
int main() {
  fcn();
}
M128K145
Эксперт С++
8283 / 3502 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
09.08.2009, 12:30     Ряды. Рекурсия #13
zim22, прочитай пятый пост
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.08.2009, 14:43     Ряды. Рекурсия
Еще ссылки по теме:

Ряды - C++
Помогите с рядами , новичок в с++.

Ряды - C++
Помогите плиз с прогой,если не трудно её полный текст ∑(от n=1 до бесконечности) n/(3n-1)

числовые ряды в С++ - C++
Как записать данный ряд: pi=3+4((1/2*3*4)-(1/4*5*6)+(1/6*7*8)-......) в С++?

Ряды Тейлора - C++
Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от xнач. до xкон. с шагом dx...

с++ ряды тейлора - C++
Помогите решить. Вроде что-то набросал, но что-то не идет #include&lt;iostream&gt; #include&lt;math.h&gt; #include &lt;iomanip&gt; using...


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

Или воспользуйтесь поиском по форуму:
Ёрик
46 / 46 / 2
Регистрация: 07.01.2009
Сообщений: 298
09.08.2009, 14:43  [ТС]     Ряды. Рекурсия #14
спасибо,все равно придется оставить предыдущий вариант,т.к. у меня возращаемое значение есть,причем у меня также есть шаг,в котором я задаю шаг,предельное значение, ... . Задачка чуть посложней.Но все равно спасибо за интересный вариант.
Yandex
Объявления
09.08.2009, 14:43     Ряды. Рекурсия
Ответ Создать тему
Опции темы

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