指导思想:|sqrt(x)^2 - x| < 0.001
#include<stdio.h>
//|sqrt(x)^2 - x| < 0.001
double sqrtfunc(double a, double b, double x)
{
double ret = (a + b) / 2;
if ((ret*ret - x) * (ret*ret - x) < (0.001 * 0.001))
return ret;
else if ((a * a - x) * (a * a - x) < (b * b - x) * (b * b - x))
return sqrtfunc(a, ret, x);
else
return sqrtfunc(ret, b, x);
}
double sqrt_function(double x)
{
if(x <= 0) return 0;
if (x < 1)
return sqrtfunc(0.0, 1.0, x);
else
return sqrtfunc(1.0, x, x);
}
int main()
{
double value = 0.001;
value = sqrt_function(56);
printf("%f", value);
return value;
}