Monday, December 15, 2014

Pow(x, n)

Q:
Implement pow(x, n).

T:
To save computing time, we can calculate pow(x, n/2) and reuse it.

A:


class Solution {
public:
    double pow(double x, int n) {
        if(x == 1.0) {
            return 1.0;
        }
        if(x == -1.0) {
            if(n%2 == 0) {
                return 1.0;
            }
            return -1.0;
        }
        if(n < 0) {
            return 1.0 / pow(x, -n);
        }
        if (n == 0) {
            return 1;
        }
        double v = pow(x, n/2);
        if(n%2 == 0) {
            return v*v;
        } else {
            return v*v*x;
        }
    }
};

No comments:

Post a Comment