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

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

Восстановить пароль Регистрация
 
marko_o1995
-17 / 0 / 0
Регистрация: 17.04.2013
Сообщений: 60
14.06.2013, 19:44     рекурсивный алгоритм #1
задание было такое (я не раз обращался с ним уже): построить алгоритм вычисления значения аргумента 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;
    
    
}
...
Проблема в следующем: выполняется алгоритм, но после выполнения программа не останавливается, а сразу же вылетает. Не знаю, как исправить. И вот еще что: неужели значение будет всегда вычисляться одно и то же (просто я не имею полного представления о вычислении аргумента данной функции), не нужен ли ввод какого-либо значения с клавиатуры? Поможете разобраться и исправить проблемы?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
14.06.2013, 21:36     рекурсивный алгоритм #2
Цитата Сообщение от marko_o1995 Посмотреть сообщение
Проблема в следующем
Проблема в том, что main у Вас пустой.
kventin_zhuk
БНТУ ФИТР
 Аватар для kventin_zhuk
214 / 154 / 15
Регистрация: 26.12.2012
Сообщений: 382
14.06.2013, 21:39     рекурсивный алгоритм #3
уберите вот это
C++
1
2
system ("pause");
return 0;
в main и перед ним добавьте вызов функции expon
marko_o1995
-17 / 0 / 0
Регистрация: 17.04.2013
Сообщений: 60
14.06.2013, 22:00  [ТС]     рекурсивный алгоритм #4
убрал-исправил: ничего не помогло((( можете свой код рабочий с исправлениями показать?
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
14.06.2013, 22:03     рекурсивный алгоритм #5
marko_o1995, main пустая. Ваша программа ничего не делает. То, что Вы определили функции, это еще не значит, что они будут вызываться.
marko_o1995
-17 / 0 / 0
Регистрация: 17.04.2013
Сообщений: 60
14.06.2013, 22:07  [ТС]     рекурсивный алгоритм #6
так что мне в main записать то?
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
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;
};
За адекватность формул ответственности не несу
marko_o1995
-17 / 0 / 0
Регистрация: 17.04.2013
Сообщений: 60
14.06.2013, 22:54  [ТС]     рекурсивный алгоритм #8
один фиг вылетает...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2013, 23:00     рекурсивный алгоритм
Еще ссылки по теме:

Рекурсивный алгоритм Евклида нахождения наибольшего общего делителя C++
C++ Рекурсивный алгоритм F
C++ Рекурсивный алгоритм

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,061
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;
};
или в консоли запускай
а то у тебя прога отработала и консоль закрылась
Yandex
Объявления
14.06.2013, 23:00     рекурсивный алгоритм
Ответ Создать тему
Опции темы

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