все нормально считает ответ но я не могу его вернуть из функции только на экран вывожу на предпоследней итерации ответ верный а на последней магическим образом становится -nan(ind) https://pastebin.com/a1vmNua0
#include <iostream>
#include <string>
#include <iostream>
#include <cmath>
using namespace std;
double function(double a, double b, double x) {
double res;
res = 1 / x - log(a*x + b);
return res;
}
double HalfDivisionMethod(double xl, double xr, double eps, double a, double b) {
double x = (xl + xr) / 2;
if (abs(function(a, b, x)) < eps) return x;
double fl = function(a, b, xl);
double fx = function(a, b, x);
if (fl*fx < 0) {
cout <<"x = "<< x <<endl;
cout << "fl = " << fl << endl;
cout << "fx = " << fx << endl;
cout << "xl = " << xl << endl;
cout << "xr = " << xr << endl;
cout << "Идем влево" << endl<<endl;
HalfDivisionMethod(xl, x, eps, a, b);
}
else {
cout << "x = " << x << endl;
cout << "fl = " << fl << endl;
cout << "fx = " << fx << endl;
cout << "xl = " << xl << endl;
cout << "xr = " << xr << endl;
cout << "Идем вправо" << endl << endl;
HalfDivisionMethod(x, xr, eps, a, b);
}
}
int main()
{
setlocale(LC_ALL, "Rus");
cout << "Hello, world!";
cout << HalfDivisionMethod(0.1, 1, 0.00001, 3, 5);
int a;
cin >> a;
return 0;
}
Как минимум, вы должны рекурсивно вызывать с возвратом значения: не просто
HalfDivisionMethod(xl, x, eps, a, b);
HalfDivisionMethod(x, xr, eps, a, b);
а
return HalfDivisionMethod(xl, x, eps, a, b);
return HalfDivisionMethod(x, xr, eps, a, b);
Иначе возврат в самой глубокой рекурсии просто теряется.
А код помещайте в вопрос!
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости