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

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

Войти
Регистрация
Восстановить пароль
 
Yark0s
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 37
#1

Разработка рекурсивных алгоритмов для вычисления функции - C++

18.02.2014, 23:52. Просмотров 292. Ответов 5
Метки нет (Все метки)

Сразу к сути!!! Я должен сделать рекурсию функции y=x+3-e^-x. Что то y2 не выводит, ошибок нету!
Вот код программы:
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
42
43
44
45
46
47
48
49
//---------------------------------------------------------------------------
#pragma hdrstop
#include <tchar.h>
//---------------------------------------------------------------------------
#pragma argsused
#include <iostream.h>
#include <conio.h>
#include <math.h>
 
int f1(double x, double eps)
  {
   int k = 1;
   double c = 1;
   do
   {
      c =c*x;
      k++;
    }
    while (c/k>eps);       //возможно ошибка здесь или в цыкле 
    return k;
  }
 
double f(double x, int n, int k=1)
{
   if(k==n)
    return (1.0-x/k);
   else
    return (1.0-x/k*f(x,n,k));       //возможно ошибка здесь 
}
 
int _tmain(int argc, _TCHAR* argv[])
{  cout<<"X= ";
   double x;
   cin>>x;
   int n=f1(x,0.00001);
   double y1=x+3-exp(-x);
   printf("%.8f\n",y1);
   int t1=time(NULL);
   double y2=x+3-f(x,n);
   int t2=time(NULL);
   printf("%.8f\n",y2);
   cout<<t2-t1<<"\n";
   getch();
   return 0;
 
}
 
 
//---------------------------------------------------------------------------
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2014, 23:52     Разработка рекурсивных алгоритмов для вычисления функции
Посмотрите здесь:

Разработка и отладка алгоритмов и программ с использованием указателей. C++
Разработка и отладка алгоритмов и программ с использованием указателей C++
Разработка алгоритмов и программ по реализации перегрузки операторов C++
Разработка алгоритмов поиска в массивов [Задача] C++
Разработка программы для вычисления объема геометрических фигур; вычисление результата 'непростой' формулы C++
Разработка и отладка алгоритмов и программ с использованием указателей C++
Рекурсия, ряд Фибоначчи (определить количество рекурсивных вызовов функции) C++
Разработка и отладка циклических алгоритмов и программ C++
C++ Разработка и отладка циклических алгоритмов и программ
Разработка и отладка алгоритмов и программ C++
C++ Разработка параллельных алгоритмов для решения СЛАУ
Рекурсивные алгоритмы. Примеры рекурсивных алгоритмов C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Eldies
90 / 81 / 28
Регистрация: 06.02.2014
Сообщений: 119
19.02.2014, 00:36     Разработка рекурсивных алгоритмов для вычисления функции #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
строчка 16
C++
1
c =c*x/k;
строчка 28
C++
1
return (1.0-x/k*f(x,n,k+1));
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
19.02.2014, 01:02     Разработка рекурсивных алгоритмов для вычисления функции #3
Зачем тут рекурсия? Ты степень экспоненты рекурсивно пытаешься посчитать что ли?
Yark0s
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 37
19.02.2014, 01:57  [ТС]     Разработка рекурсивных алгоритмов для вычисления функции #4
А про комментировать можешь???

Добавлено через 52 секунды
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Зачем тут рекурсия? Ты степень экспоненты рекурсивно пытаешься посчитать что ли?
Это что бы понять как считает машина!
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
19.02.2014, 02:49     Разработка рекурсивных алгоритмов для вычисления функции #5
Зачем тут рекурсия? Ты степень экспоненты рекурсивно пытаешься посчитать что ли?
Eldies
90 / 81 / 28
Регистрация: 06.02.2014
Сообщений: 119
19.02.2014, 09:37     Разработка рекурсивных алгоритмов для вычисления функции #6
Здесь считается http://www.cyberforum.ru/cgi-bin/latex.cgi?e^{-x} рекурсивно с помощью разложения в ряд Маклорена.

C++
1
int f1(double x, double eps)
эта функция рассчитывает необходимое число членов ряда, путем сравнения очередного члена ряда с eps.
http://www.cyberforum.ru/cgi-bin/latex.cgi?c_k = \frac{x^k}{k!} =  \frac{x}{k}\cdot  c_{k-1}


C++
1
double f(double x, int n, int k=1)
эта функция считает http://www.cyberforum.ru/cgi-bin/latex.cgi?e^{-x}, как сумму первых n членов ряда Маклорена.

C++
1
return (1.0-x/k*f(x,n,k));
не работает, потому что вызов функцией самой себя с теми же самыми параметрами - никогда не заканчивающаяся рекурсия
Yandex
Объявления
19.02.2014, 09:37     Разработка рекурсивных алгоритмов для вычисления функции
Ответ Создать тему
Опции темы

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