用C++编写个函数,对任意整数开平方根

2024-12-04 00:43:01
推荐回答(2个)
回答(1):

一般都是用标准库里的 sqrt方法
要自己实现,通常用的是牛顿迭代
y = x 的平方
那么 y对 x 的导数是 2x
所以迭代式为 x = (y/x + x)/2

double mysqrt(double num)
{
double x = 1.0;
while( fabs( x*x - y) > 1e-5) //达到精度标准就退出
{
x = (y/x +x)/2;
}
return x;
}

然后你会发现,其实算出来的数是有误差的。

回答(2):

一般都是用标准库里的 sqrt方法
要自己实现,通常用的是牛顿迭代
y = x 的平方
那么 y对 x 的导数是 2x
所以迭代式为 x = (y/x + x)/2

double mysqrt(double num)
{
double x = 1.0;
while( fabs( x*x - y) > 1e-5) //达到精度标准就退出
{
x = (y/x +x)/2;
}
return x;
}