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

results matching ""

    No results matching ""