写一个用二分法求平方根的Java代码
时间: 2023-03-25 20:02:28 浏览: 115
以下是用二分法求平方根的Java代码:
public static double sqrt(double x) {
if (x < ) {
throw new IllegalArgumentException("x不能为负数");
}
if (x == ) {
return ;
}
double left = , right = x;
while (true) {
double mid = (left + right) / 2;
if (mid * mid == x || Math.abs(mid * mid - x) < 1e-7) {
return mid;
} else if (mid * mid < x) {
left = mid;
} else {
right = mid;
}
}
}
相关问题
二分法求平方根java
二分法求平方根是一种常用的数值计算方法,可以用来近似求解一个非负实数的平方根。在Java中,可以通过以下步骤来实现二分法求平方根:
1. 首先确定要求解平方根的数值,假设为x。
2. 定义一个精度值epsilon,用于控制计算的精度。
3. 定义两个变量low和high,分别表示二分法的搜索范围的下界和上界。初始时,low为0,high为x。
4. 进入循环,直到满足终止条件。终止条件可以是high与low之间的差值小于等于epsilon。
5. 在循环中,计算mid作为low和high的中间值。
6. 判断mid的平方是否等于x,如果是,则mid即为所求的平方根。
7. 如果mid的平方大于x,则将high更新为mid。
8. 如果mid的平方小于x,则将low更新为mid。
9. 重复步骤5至8,直到满足终止条件。
10. 返回最终的结果。
下面是一个示例代码:
```java
public class SquareRoot {
public static double sqrt(double x) {
double epsilon = 1e-15; // 精度值
double low = 0;
double high = x;
while (high - low > epsilon) {
double mid = (low + high) / 2;
double square = mid * mid;
if (square == x) {
return mid;
} else if (square > x) {
high = mid;
} else {
low = mid;
}
}
return (low + high) / 2;
}
public static void main(String[] args) {
double x = 16;
double result = sqrt(x);
System.out.println("平方根:" + result);
}
}
```
java如何递归计算平方根 要求小数点后3位
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的平方根。