开方算法
数字开方,求平方根算法
二分查找
大致的逻辑是这样的:
比如对6求开方
初始化 low=0,high=6
- mid=(low+hight)/6=3,3*3 = 9 > 6,那么上限high = 3,
- mid =(0+3)/2=1.5, 1.5*1.5 = 2.25 < 6,那么更新下限 low = 1.5
- mid = (low+high)/2=2.25
然后接着更新上限或下限,直到误差在一定范围之内,就是得到的值
int my_sqrt(int x){
if(x==0||x==1)
return x;
double error=1;
double mid;
double low = 0;
double high = x;
double tmp_res;
while(error>0.00001){
mid = (low+high)/2.0;
tmp_res = mid*mid;
error = abs(tmp_res - x);
if(tmp_res>x)
high = mid;
else
low = mid;
}
return int(mid);

浙公网安备 33010602011771号