С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/40: Рейтинг темы: голосов - 40, средняя оценка - 4.60
0 / 0 / 2
Регистрация: 13.12.2014
Сообщений: 18
1

Вычисление суммы ряда используя рекурсию

14.02.2015, 21:26. Показов 7493. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите написать програму для вычисления сумы ряда используя рекурсию
Я только понял как посчитать факториал (2*N+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
26
27
#include <iostream>
#include <math.h>
using namespace std;
 
long double fact(int C)
{
    if(C < 0) // если пользователь ввел отрицательное число
        return 0; // возвращаем ноль
    if (C == 0) // если пользователь ввел ноль,
        return 1; // возвращаем факториал от нуля
    else // Во всех остальных случаях
        return C * fact(C - 1); // делаем рекурсию.
}
 
int main()
{
    int N,x;
    double sum;
    setlocale(0,""); // Включаем кириллицу
    cout << "Введите число для вычисления факториала: ";
    cin >> N;
    int C=2*N+1;
    cout << "Факториал для числа " << C << " = " << fact(C) << endl << endl; // fact(С) - функция для вычисления факториала.
    system("pause");
    return 0;
 
}
Сума ряда выглядит так
https://www.cyberforum.ru/cgi-bin/latex.cgi?\sum \frac{{-1}^{N}*{x}^{2}}{N*(2*N+1)!}

Добавлено через 5 минут
https://www.cyberforum.ru/cgi-bin/latex.cgi?\sum \frac{{-1}^{N+1}*{x}^{2}}{N*(2*N+1)!}
Чучуть формулу не так написал, вот она
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.02.2015, 21:26
Ответы с готовыми решениями:

Вычисление суммы ряда используя рекуррентные соотношения
Не могу решить задачу №9

Вычисление суммы ряда используя рекуррентные соотношения
Написать программу для вычисления суммы ряда: ...

Сумма ряда с точностью Е, используя рекурсию
Найти сумму ряда с точностью е , общий член которого равен a= (10^n)/ (2*n)! Выдает inf, никак не...

Найти сумму ряда с точностью е, используя рекурсию
Найти сумму ряда с точностью е , общий член которого равен a=(-1)^(n-1)/n^n. Программу я сделала,...

13
184 / 168 / 53
Регистрация: 27.01.2013
Сообщений: 788
14.02.2015, 21:51 2
сумма = элемент + сумма_без_элемента
0
0 / 0 / 2
Регистрация: 13.12.2014
Сообщений: 18
14.02.2015, 21:53  [ТС] 3
saden, а можете это в коде записать, а то я не понял(
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
14.02.2015, 21:55 4
WejusT1k, какой диапозон суммирования
0
0 / 0 / 2
Регистрация: 13.12.2014
Сообщений: 18
14.02.2015, 22:00  [ТС] 5
Jewbacabra,
диапозон в условии не дан, значит любой который мы введем с клавиатуры, только 0 нужно исключить
Вот я уже даже часть кода написал, только факториал не могу запилить туда
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
#include <iostream>
#include <math.h>
using namespace std;
 
long double fact(int C)
{
    if(C < 0) // если пользователь ввел отрицательное число
        return 0; // возвращаем ноль
    if (C == 0) // если пользователь ввел ноль,
        return 1; // возвращаем факториал от нуля
    else // Во всех остальных случаях
        return C * fact(C - 1); // делаем рекурсию.
}
long double function(int N,int x)
{
    
    double result;
    double eps=0.00000001;
    if(N <= 0 ) return 0; 
    result = pow(-1,N+1)*pow(x,2) / N(КАК СЮДА ВТУЛИТЬ ФАКТОРИАЛ?);
    if((N == 0) || (result<eps))
        return result;
    else
        return result + function(N - 1,x);
}
 
int main()
{
    int N,x;
    setlocale(0,""); // Включаем кириллицу
    cout << "Введите число для вычисления факториала: ";
    cin >> N;
    cout<<"Введите х \n";
    cin>>x;
    int C=2*N+1;
    cout<<"Результат "<<function(N,x)<<"\n";
    cout << "Факториал для числа " << C << " = " << fact(C) << endl << endl; // fact(N) - функция для вычисления факториала.
    system("pause");
    return 0;
 
}
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
14.02.2015, 22:05 6
Цитата Сообщение от WejusT1k Посмотреть сообщение
только факториал не могу запилить туда
а это не нужно.
Достаточно выразить a(n+1) через a(n)
0
184 / 168 / 53
Регистрация: 27.01.2013
Сообщений: 788
14.02.2015, 22:14 7
C++
1
2
3
4
5
double sum(int n)
{ double an = //член ряда, лениво набирать
if(an<1e-6) return an;//граничная точность счета
else return an+sum(n+1);
}
Добавлено через 2 минуты
факториал уже набран в начале темы.
чем не подходит?

Добавлено через 6 минут
забыл про х
C++
1
2
3
double sum(double x,int n=1)//значение по умолчанию позволит делать вызов просто как sum(0.01)
{ ...
}
0
0 / 0 / 2
Регистрация: 13.12.2014
Сообщений: 18
14.02.2015, 22:38  [ТС] 8
saden,
C++
1
else return an+sum(n+1);
я вот не понял этой строчки я ввожу с клавиатуры n=100 , суму оно начнет считать с n а потом увеличивать на 1?

Добавлено через 9 минут
Jewbacabra,
я вот сижу так и не могу понять, как сделать, может поможете в написании кода?
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
14.02.2015, 22:55 9
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>
#include <cmath>
using namespace std;
 
double rec_sum(double acc, double last, double eps, int i) {
    double next = last * -i / (2 * (i+1) * (i+1) * (2*i+3));
    if (abs(next) < eps) {
        return acc;
    } else {
        return rec_sum(acc+next, next, eps, i+1);
    }
}
 
double sum(double x) {
    return rec_sum(-x*x/6, -x*x/6, 1.0e-6, 2);
}
 
int main() {
    int x;
    cin >> x;
    cout << sum(x);
    return 0;
}
сделал для суммы, где -1^N. Для -1^N+1 домножить результат на -1
0
0 / 0 / 2
Регистрация: 13.12.2014
Сообщений: 18
14.02.2015, 23:04  [ТС] 10
Jewbacabra, что то я туплю, даже не понимаю что это за программа
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
14.02.2015, 23:11 11
Лучший ответ Сообщение было отмечено WejusT1k как решение

Решение

WejusT1k, посмотри в этой теме. Большая коллекция решенных задач
Там решается через цикл, но его легко можно переделать в рекурсию, а основная идея та же
1
0 / 0 / 2
Регистрация: 13.12.2014
Сообщений: 18
15.02.2015, 01:35  [ТС] 12
Jewbacabra, через цикл я уже давно сделал, вот только что и с рекурс разобрался,спасибо большое за помощь)

Добавлено через 1 час 23 минуты
Думал что разобрался, но все таки нет, кто нибудь помогите и напишите полный код , буду очень благодарен(

Добавлено через 50 минут
Кто-нибудь помогите пожалуйста
0
184 / 168 / 53
Регистрация: 27.01.2013
Сообщений: 788
15.02.2015, 08:33 13
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
#include <iostream>
#include <math.h>
using namespace std;
 
long double fact(int C)
{
    if(C < 0) // если пользователь ввел отрицательное число
        return 0; // возвращаем ноль
    if (C == 0) // если пользователь ввел ноль,
        return 1; // возвращаем факториал от нуля
    else // Во всех остальных случаях
        return C * fact(C - 1); // делаем рекурсию.
}
 
double sum(double x,double eps=1e-6,int n=1)//значение по умолчанию позволит делать вызов просто как sum(0.01)
{  double an = pow(-1,n+1)*pow(x,2) /n/fact(2*n+1);
if(an<eps) return an;//граничная точность счета
else return an+sum(x,eps,n+1);
}
 
int main()
{
    double x;
    double sum;
    setlocale(0,""); // Включаем кириллицу
    cout << "Введите число x: ";
    cin >> x;
 
    cout << "Сумма для числа " << x << " = " <<  sum(x) << endl << endl; //sum(x,1e-7) - расчет с другой точностью, sum(x,1e-7,10) - начало счета с 10 элемента
    system("pause");
    return 0;
 
}
0
0 / 0 / 2
Регистрация: 13.12.2014
Сообщений: 18
15.02.2015, 11:45  [ТС] 14


В чем ошибка?

Добавлено через 15 секунд
saden, Помогите пожалуйста

Добавлено через 4 минуты
saden, Большое спасибо, я разобрался) там просто когда объявляли sum, то мы объявили её как переменную а не функцию
0
15.02.2015, 11:45
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.02.2015, 11:45
Помогаю со студенческими работами здесь

Подсчет суммы всех чисел до заданного числа, используя рекурсию
Напишите пример как подсчитать сумму всех чисел до (например 6) используя рекурсию !!

Найти значение суммы используя рекурсию нахождения целого степени числа а
Найти значение суммы ряда используя рекурсию нахождения целого степени числа а

Вычисление суммы ряда
Помогите, нужен полный код программы, которая вычисляет частичную сумму ряда \sum_{k=1}^{\infty...

Вычисление суммы ряда C++
Помогите пожалуйста написать код к этим заданиям, и желательно с объяснением, а то ничего не...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru