50. Pow(x, n) - 力扣(LeetCode) (leetcode-cn.com)
思路:快速幂
递归方法:
class Solution {
private:
double quickMul(double x, long long N) {
if(N == 0) return 1.0;
double y = quickMul(x, N/2); //先计算N一半次幂
return N % 2 == 0 ? y * y : y * y * x; //若N为奇数,则多乘一个x
}
public:
double myPow(double x, int n) {
long long N = n; //注意N的类型
//如果n为负数,则先算-n,再取倒数
if(n < 0) {
return 1.0 / quickMul(x, -N);
}
return quickMul(x, N);
}
};