Я попытался реализовать функцию с помощью бинарного поиска, чтобы решить следующее:
Реализуйте функцию root, которая вычисляет n-й корень числа. Функция принимает неотрицательное число x и целое положительное число n и возвращает положительный n-й корень x с ошибкой 0,001 (т. е. предположим, что действительный корень равен y, тогда ошибка: |y-root(x, n)| и должно удовлетворять условию |y-root(x,n)| ‹ 0,001). Ключ в том, чтобы найти корень без использования функции STL.
Мой код:
double binarysearch(double left,double right, double x, int n){
while(left<right){
double mid = left + (right-left)/2;
double answer = pow(mid,n);
if(fabs(answer - x ) <= DELTA)
return mid;
else if(answer > x )
right = mid - DELTA;
else
left = mid + DELTA;
}
return -1;
}
Это достигает состояния, когда лево>право, и возвращает -1.
Есть ли способ реализовать это с помощью бинарного поиска?