我得到了一个问题,我应该再次使用递归来解决。这是关于牛顿的方法。该算法适用于小数字,但突然当我给出较大的数字时,程序进入循环。
这是我对牛顿方法的描述:
首先我被要求从 a =x 开始
- 如果 |a*ax|<= epsilon,则 a 是公差内 x 的平方根;否则
- 将 a 替换为 (a*a+x)/(2*a) 并重复步骤 1
这是我的代码:x 是我应该去掉平方根的数字,e 是容差
public static double sqrtR (int x, double e, int a) {
if (Math.abs(a * a - x) <= e) {
return a;
} else {
a = (a * a + x) / (2 * a);
return 1.0 *(sqrtR(x, e, a));
}
}