С++ метод половинного деления выводит -nan(ind)

191
22 декабря 2017, 02:04

все нормально считает ответ но я не могу его вернуть из функции только на экран вывожу на предпоследней итерации ответ верный а на последней магическим образом становится -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;
}
Answer 1

Как минимум, вы должны рекурсивно вызывать с возвратом значения: не просто

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);

Иначе возврат в самой глубокой рекурсии просто теряется.

А код помещайте в вопрос!

READ ALSO
Реализация AVL дерева в виде класса [требует правки]

Реализация AVL дерева в виде класса [требует правки]

Вот вроде бы нашёл почти реализованый алгоритм на AVL-деревоМне же нужно слепить из этого класс, но узлы у меня через insert добавляются неправильно

145
Ошибка IOexception в Java Android

Ошибка IOexception в Java Android

В приложени в первом активити идет хттп запрос на серверИспользую Okhttp3 для запроса

202
Java и работа с Oracle

Java и работа с Oracle

Решил попробовать написать программу на Java в связке с БД OracleПрограмма будет делать следующее:

157
Сокращение времени билда приложения

Сокращение времени билда приложения

Билд и запуск приложения в Android Studio 30 слишком долгий(иногда 20-25 минут) при развертывании на Android 4

140