求
a√b
,可以写成
a√−−−√b/2
,
a√−−−√−−−−−√b/4
, …
因此,b/2k {k = 1, 2, 3,…} 无限趋近与1时,
a√2k
即为结果
#define exp 0.00001
double func(int a, int b)
{
double d = b;
double res = a;
while (fabs(d-1) > exp) {
res = sqrt(res);
d /= 2;
}
return res;
}
注:sqrt 函数可以使用牛顿迭代法来实现