Leetcode 50 Pow (x, n) (Fast Power)

pow(x,i)

(1) i%2==0 pow(x,i)=pow(x,i/2)*pow(x,i/2);

(2) i%2!=0 pow(x,i)=pow(x,i-1)*x;

 

class Solution {
public:
    double getPow(double x,long long i) {
        if (i == 0)return 1;
        if (i % 2 == 0) {
            double s = getPow(x, i / 2);
            return s*s;
        }
        else {
            return getPow(x, i - 1)*x;
        }
    }
    double myPow(double x, int n) {
        long long kn = n;
        if (kn < 0)kn = abs(1.0*kn);
        double ans = getPow(x, kn);
        return n >= 0 ? ans : 1 / ans;
    }
};

 

Guess you like

Origin www.cnblogs.com/suuusu/p/11069250.html