题目描述:
实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。
解题分析:
使用递归分解即可,不过需要注意的是n为负的最小值的时候,-n会超过int的范围,需要定义long long N=n。
class Solution {
public:
double myPow(double x, int n) {
long long N=n;
bool isPositive = N>=0 ? true : false;
double ans=0;
if(isPositive)
ans=quickPow(x, N);
else
ans=quickPow(x, -N);
return n>=0 ? ans : 1/ans;
}
double quickPow(double x, long long n){
if(n==0)
return 1;
double y = myPow(x, n/2);
if(n%2==0)
return y * y;
else
return x * y * y;
}
};