题目要求:给定一个数,求出它的平方根,精确到小数点后五位
思路:利用二分法,当mid*mid大于目标x时,证明mid就大于x的平方根,此时就可以缩小范围。结束条件由精确程度决定,比如题目要求的五位小数,那么结束条件就是解的范围小于0.00001。
#include<iostream>
#include <math.h>
using namespace std;
double our_sqrt(double x){
double eps = 0.00001;
double l = 0.0;
double r = x;
double mid = 0;
while((r-l)>eps){
mid = (l+r)/2;
if(mid*mid>x){
r = mid;
}else{
l = mid;
}
}
return mid;
}
int main(){
double x;
cin>>x;
cout<<sqrt(x)<<endl;//调用库的正确答案
cout<<our_sqrt(x);
return 0;
}