题目出处:https://leetcode-cn.com/problems/powx-n/
思路:要计算x^n,递归的计算x ^ (n//2)。
递归终止条件为 n == 0,每次递归都会使n/2,所以时间复杂度为O(n)
class Solution {
public:
double quickMul(double x, long long N) {
if (N == 0) {
return 1.0;
}
double y = quickMul(x, N / 2);
return N % 2 == 0 ? y * y : y * y * x;
}
double myPow(double x, int n) {
long long N = n;
return N >= 0 ? quickMul(x, N) : 1.0 / quickMul(x, -N);
}
};