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

рекурсивный алгоритм

14.06.2013, 19:44. Просмотров 413. Ответов 8
Метки нет (Все метки)

задание было такое (я не раз обращался с ним уже): построить алгоритм вычисления значения аргумента exp(x) с точностью до "эпсилон" с использованием рекурсии.
...
код получился вот такой:
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
#include <cmath>
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <Windows.h>
#include <iomanip>
#include <cmath>
 
using namespace std;
void main(){};
int factorial(int n) {
    if(n==1 || !n) return 1;
    return n* factorial (n-1); }
 
double expn(double x,double old_x, double eps, int n)
{
    if (!x) return 1.;
    double summ;
    if (n==1) summ = 1.;
    else summ = old_x;
    summ += pow(x,n)/(double)factorial(n);
    if (fabs(summ-old_x)>=eps)
        return expn(x, summ, eps, n+1);
    else return summ;
    system ("pause");
    return 0;
    
    
}
...
Проблема в следующем: выполняется алгоритм, но после выполнения программа не останавливается, а сразу же вылетает. Не знаю, как исправить. И вот еще что: неужели значение будет всегда вычисляться одно и то же (просто я не имею полного представления о вычислении аргумента данной функции), не нужен ли ввод какого-либо значения с клавиатуры? Поможете разобраться и исправить проблемы?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2013, 19:44
Ответы с готовыми решениями:

Рекурсивный алгоритм
помогите плиз представить в рекурсивный алгоритм Массив A proverka=1...

Рекурсивный алгоритм
Даны натуральные числа &quot;N&quot; и &quot;M&quot; надо решить с помощью с++ не могу...

рекурсивный алгоритм
Уважаемые программисты! Есть задача: разработать рекурсивный алгоритм на с++...

Рекурсивный алгоритм
помогите пожалуйста Представить в рекурсивный алгоритм Цикл пока...

Рекурсивный алгоритм F
Привет всем! Помогите пожалуйста как решается данная функция, если F = 6. ...

8
Tulosba
:)
Эксперт С++
4747 / 3241 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
14.06.2013, 21:36 #2
Цитата Сообщение от marko_o1995 Посмотреть сообщение
Проблема в следующем
Проблема в том, что main у Вас пустой.
0
kventin_zhuk
БНТУ ФИТР
215 / 155 / 41
Регистрация: 26.12.2012
Сообщений: 382
14.06.2013, 21:39 #3
уберите вот это
C++
1
2
system ("pause");
return 0;
в main и перед ним добавьте вызов функции expon
0
marko_o1995
-17 / 0 / 1
Регистрация: 17.04.2013
Сообщений: 60
14.06.2013, 22:00  [ТС] #4
убрал-исправил: ничего не помогло((( можете свой код рабочий с исправлениями показать?
0
Tulosba
:)
Эксперт С++
4747 / 3241 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
14.06.2013, 22:03 #5
marko_o1995, main пустая. Ваша программа ничего не делает. То, что Вы определили функции, это еще не значит, что они будут вызываться.
0
marko_o1995
-17 / 0 / 1
Регистрация: 17.04.2013
Сообщений: 60
14.06.2013, 22:07  [ТС] #6
так что мне в main записать то?
0
Tulosba
:)
Эксперт С++
4747 / 3241 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
14.06.2013, 22:09 #7
marko_o1995,
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
#include <cmath>
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <iomanip>
#include <cmath>
 
using namespace std;
 
int factorial(int n) {
    if(n==1 || !n) return 1;
    return n* factorial (n-1); }
 
double expn(double x,double old_x, double eps, int n)
{
    if (!x) return 1.;
    double summ;
    if (n==1) summ = 1.;
    else summ = old_x;
    summ += pow(x,n)/(double)factorial(n);
    if (fabs(summ-old_x)>=eps)
        return expn(x, summ, eps, n+1);
    else return summ;
    system ("pause");
    return 0;
}
 
int main()
{
    cout << expn( 2, 9, 0.01, 1) << endl;
    return 0;
};
За адекватность формул ответственности не несу
0
marko_o1995
-17 / 0 / 1
Регистрация: 17.04.2013
Сообщений: 60
14.06.2013, 22:54  [ТС] #8
один фиг вылетает...
0
ValeryS
Модератор
7211 / 5474 / 681
Регистрация: 14.02.2011
Сообщений: 18,521
14.06.2013, 23:00 #9
Цитата Сообщение от marko_o1995 Посмотреть сообщение
один фиг вылетает...
задержку то поставь
C++
1
2
3
4
5
6
int main()
{
    cout << expn( 2, 9, 0.01, 1) << endl;
system ("pause");
    return 0;
};
или в консоли запускай
а то у тебя прога отработала и консоль закрылась
0
14.06.2013, 23:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2013, 23:00

Рекурсивный алгоритм
Доброго времени суток #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace...

рекурсивный алгоритм
В общем я уже намучился с этим заданием... Дело такое, алгоритм составлен, но...

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


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

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

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