Pow(x, n)

Implement pow(x, n).

Example:

Pow(2.1, 3) = 9.261

Pow(0, 1) = 0

Pow(1, 0) = 1

Challenge:

O(logn) time.

Solution:

x^n = x^{n\/2} * x^{n\/2} * x^{n%2}.

Code:

public double myPow(double x, int n) {
    if (n < 0) {
        return 1 / helper(x, -n);
    }
    return helper(x, n);
}

private double helper(double x, int n) {
    if (n == 0) {
        return 1;
    }
    double v = helper(x, n / 2);
    if ((n & 1) == 0) {
        return v * v;
    } else {
        return v * v * x;
    }
}

results matching ""

    No results matching ""