Для реализации рекурсивного бинарного поиска (вещественного) Вам необходимо реализовать функции
bs
Функция
bs должна иметь заголовок
auto bs(double L, double R, double acc, int p), где:
- L, R - границы отрезка для поиска ответа;
- acc - параметр, определяющий что достигнута нужная точность.
Достижение нужной точности определяется ответом функции int dov(double L,double R,double acc)
- возвращает ответ 1, если точность достигнута, и любое целое число в противном случае (требуемая точность не достигнута)
p - параметр, определяющий "ответ поиска". Проверка результата проверяется с помощью вызова функции int check(double X, int p)
Функция check(X, p) возвращает 1 если значение подходит и любое другое целое число, если не подходит..
Гарантируется, что для входных/начальных значений check(R, p) == 1, а check(L, p) != 1
Ваша задача реализовать рекурсивную функцию
bs так,
чтобы она находила и возвращала два значения
X, Y удовлетворяющие условиям:
-
dov(X, Y, acc) == 1
-
check(X, p) != 1
-
check(Y, p) == 1
для возврата значений
X, Y воспользуйтесь моделью
return tuple(X, Y);
Пояснения:
- Вам надо дописать только недостающую часть кода
- При решении нельзя использоваться циклические структуры, массивы и вектора
- Изменять значения параметров acc, p не рекомендуется. Используйте их только как параметры
функций проверок check и dov
Запрещенные операторы: for; while; vector