double QuickMuti(double x, long int n) {
if (n == 0)
return 1.0;
double y = QuickMuti(x, n/2);
return n % 2 == 0 ? y * y : y * y * x;
}
double myPow(double x, int n) {
long int N = n;
double ans = n < 0 ? 1.0 / QuickMuti(x, -N) : QuickMuti(x, N);
return ans;
}
一开始我的写法是将x乘n次,发现会出现解答超时,看了题解后,学到了快速幂算法,时间复杂度为O(logN),使用递归实现。