实现 pow(x, n) ,即计算 x 的 n 次幂函数即x^n。
思路:把整数n写成二进制,每位二进制上的1代表相应的指数,结果为x的幂次相乘。
class Solution {
public:
double result(double x,long long N){
double res=1.0;
double pw=x;//初始幂次
while(N>0){
if(N%2==1){//如果二进制的最低位为1,则需计入
res*=pw;
}
pw*=pw;//扩大幂次
N/=2;//除去最低位
}
return res;
}
double myPow(double x, int n) {
long long N=n;//int负数转化为正数可能会越界
return N>0?result(x,N):1.0/result(x,-N);//判断N的正负返回结果
}
};