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

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

Войти
Регистрация
Восстановить пароль
 
VarkrafT
Сообщений: n/a
#1

C++ ошибка в рекурсивной функции...помогите разобраться... - C++

04.04.2008, 16:01. Просмотров 926. Ответов 0
Метки нет (Все метки)

Здравствуйте. Ниже написана программа с использованием рекурсивной функции...
Функции s1,s2,s3,s4,s5-функции, вычисляющие суммы членов ряда,
next- функция вычисления очередного члена ряда, stx-функция вычисления степени x. s1,s2-считают правильно, а в s3,s4,s5 не знаю где ошибка((( Помогите пожалуйста разобраться...
Код
#include<math.h>
#include<conio.h>
#include<iostream.h>
#include<iomanip.h>
#include<fstream.h>
#include<stdlib.h>
ofstream fout;
double p=3.141592653589793;
float stx(float x, int n)
{if(x==0) return(0);
 else if(n==0)return(1);
 else if(n==1) return (x);
 else return(x*stx(x,n-1));
}
float next(float x,int n)
{
 return atan(x/sqrt(1-stx(x,2)));
}
typedef float(*func)(float,int);
float s1(float x,float e)
{
   float a=((2*1-1)*stx(x,2*1+1))/((2*1)*(2*1+1)),s=p/2-x;
   int n=1;
   while (fabs(a)>e)
   {s-=a; a*=((2*n-1)*stx(2*n+1,2)*stx(x,2))/((2*n+2)*(2*n+3));
   n++;
   }
   return(s+a);
}
float s2(float x,float e)
{ float a=a=((2*1-1)*stx(x,2*1+1))/((2*1)*(2*1+1)),s=p/2-x;
int n=1;
do
  {s-=a; a*=(((2*n-1)*stx(2*n+1,2)*stx(x,2))/((2*n+2)*(2*n+3)));
  n++;
  }
  while (fabs(a)>e);
  return(s+a);
}
float s3(int n,float x,float e, func fn)
{
 float f=fn(x,n),s=p/2;
 while(fabs(f)>e)
 {s-=f;n++;f=fn(x,n);}
 return(s+f);
}
 

float s4(int n,float x,float e,func fn)
{
 float f=fn(x,n),s=p/2;
 do {s-=f;n++;f=fn(x,n);}
 while(fabs(f)>e);
 return(s+f);
}
float s5(int n,float x, float e,func fn)
{
float f=fn(x,n);
if(fabs(f)<e)return f;
else return(f+s5(n+1,x,e,fn));
}
 
void main()
{float e=1.e-5;
fout.open("15.res");
if(!fout)
{cout<<"oshibka otkrbItij fajla rezylbtatov";exit(0);}
fout<<"\t\t\tRezylbtatbI dlj e="<<e<<'\n'
<<"|-----|----------|----------|----------|----------|----------|----------|"<<'\n'
<<"|  x  |  arccos  |   s1     |    s2    |   s3     |   s4     |   s5     |"<<'\n'
<<"|-----|----------|----------|----------|----------|----------|----------|";
for(float x=0.1; x<1; x+=1)
{
 fout<<endl<<'|'<<setw(3)<<x<<setw(3)<<'|'<<setw(10)<<acos(x)<<'|'
 <<setw(10)<<s1(x,e)<<'|'<<setw(10)<<s2(x,e)<<'|'
 <<setw(10)<<s3(1,x,e,next)<<'|'<<setw(10)<<s4(1,x,e,next)<<'|'
 <<setw(10)<<s5(1,x,e,next)<<'|';
}
fout<<'\n'<<"|-----|----------|----------|----------|----------|----------|----------|";
fout.close();

}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2008, 16:01     C++ ошибка в рекурсивной функции...помогите разобраться...
Посмотрите здесь:

Не могу разобраться с отработкой рекурсивной функции C++
C++ помогите разобраться с библиотекой и в чем ошибка?
Помогите разобраться(С)Cпособы передачи аргументов в вызываемые функции: по значению, указателю и ссылке C++
Программa с использованием рекурсивной функции C++
Помогите разобраться в чем ошибка. C++
помогите разобраться с ошибкой в вызове функции C++
Использование рекурсивной функции C++
C++ Разобраться с рекурсивной функцией обхода бинарного дерева
Из рекурсивной функции в не рекурсивную C++
C++ Создание потоков в рекурсивной функции
C++ Проверка аргументов рекурсивной функции
Схема рекурсивной функции C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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