二分算法求一个数x的三次方根
需要考虑几个点:
1.数是负数
2.数是小于1的数
对于第一种情况,可以先把负数转换成正数来做。
对于第二种情况,则不能在区间[0,x]二分,而应该在[x,1]上面做二分。
//代码部分(c++):
#include <iostream>
using namespace std;
double x, l, r;
int flag;
int main()
{
scanf("%lf",&x);
if(x < 0){
x = -x;
flag = 1;
}
if(x < 1){
l = x, r = 1;
}
else {
l = 0, r = x;
}
while(r - l > 1e-8 ){
double mid = (l + r) / 2;
if(mid*mid*mid < x) l = mid;
else r = mid;
}
if(flag) l = -l;
printf("%lf",l);
}