快速幂(迭代法)

迭代法求快速幂 pow(x, n).

class Solution {
public:
    double multiply(double x, long long n) {
        double ans = 1.0;
        double base_x = x;
        while (n > 0) {
            if (n % 2 == 1) {
                ans *= base_x;
            }
            base_x *= base_x;
            n /= 2;
        }
        return ans;
    }
    double myPow(double x, int n) {
        long long N = n;
        return N >= 0 ? multiply(x, N): (1.0 / multiply(x, -(long long)N));
    }
};

  

posted @ 2021-12-06 00:11  算是一个初学者  阅读(76)  评论(0)    收藏  举报