11.5 Sqrt
Use binary serach to find square root of a number
public static float sqrt(int value) {
if (value < 0)
return 0;
return sqrt(value, 0, value);
}
public static float sqrt(int value, float left, float right) {
float mid = left + (right - left) / 2;
if (Math.abs(value / mid - mid) <= 0.01) {
return mid;
} else if (value / mid > mid) {
return sqrt(value, mid, right);
} else {
return sqrt(value, left, mid);
}
}
`
System.out.println(sqrt(1)); | 0.99609375 |
---|---|
System.out.println(sqrt(2)); | 1.4140625 |
System.out.println(sqrt(3)); | 1.734375 |
System.out.println(sqrt(4)); | 2 |
System.out.println(sqrt(5)); | 2.2363281 |
System.out.println(sqrt(6)); | 2.4492188 |
System.out.println(sqrt(7)); | 2.6455078 |
System.out.println(sqrt(8)); | 2.828125 |
System.out.println(sqrt(9)); | 2.9970703 |
System.out.println(sqrt(16)) | 4 |
System.out.println(sqrt(49)) | 6.998291 |
System.out.println(sqrt(81)) | 8.997803 |