java如何递归计算平方根 要求小数点后3位
时间: 2024-03-08 09:50:58 浏览: 64
Java中可以使用二分法递归计算平方根,以下是一个示例代码:
```
public static double sqrt(double x) {
return sqrt(x, 0, x);
}
private static double sqrt(double x, double low, double high) {
double mid = (low + high) / 2;
double square = mid * mid;
if (Math.abs(square - x) < 0.001) {
return mid;
} else if (square < x) {
return sqrt(x, mid, high);
} else {
return sqrt(x, low, mid);
}
}
```
这个代码中,`sqrt`方法传入待求平方根的数,返回计算得到的平方根,并调用私有的`sqrt`方法进行递归计算。私有的`sqrt`方法传入三个参数,分别是待求平方根的数,当前计算的区间左端点和右端点,返回计算得到的平方根。
在每次递归中,先计算区间的中点`mid`,然后计算`mid`的平方`square`。如果`square`与`x`的差值小于0.001(即小数点后3位),则认为`mid`是`x`的平方根,返回`mid`。否则,根据`square`与`x`的大小关系,缩小计算范围,并递归调用`sqrt`方法。
注意,这个方法只能计算正数的平方根,不能计算负数或0的平方根。
阅读全文