实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。
输入:x = 2.00000, n = 10 输出:1024.00000
输入:x = 2.10000, n = 3 输出:9.26100
输入:x = 2.00000, n = -2 输出:0.25000 解释:2-2 = 1/22 = 1/4 = 0.25
输入x=2.0,n=10;
debug 过程如下:
x^2 a = 5 res = x^2 x^4 a =2 x^8 a = 1 res = x^10 x^16 a=0 退出循环 返回res = x ^10;
class Solution {
public double myPow(double x, int n) {
if(x == 0){return 0;}
double res = 1;
long a = n;
if(a < 0){
a = -a;
x = 1/x;
}
while(a>0){
//下面的与运算判断a二进制最右一位是否为1
if( (a&1) == 1){
res *= x;
}
x *= x;
a >>= 1;
}
return res;
}
}