Math

class Solution {
public:
    double myPow(double x, long int n) {
        long int N;
        if (n < 0) {
            N = -(long)n;
            return 1.0 / sol(x, N);
        }
        return sol(x, n);
    }

    double sol(double x, long int n) {
        if(n == 0) return 1;
        else if(n == 1) return x;
        else if(n%4 == 0) {
            double y = sol(x, n/4);
            return y*y*y*y;
        }
        else if(n%2 == 0) {
            double y = sol(x, n/2);
            return y*y;
        }
        else {
            double y = sol(x, (n-1)/2);
            return y*y*x;
        }
     }
};

Last updated

Was this helpful?