50.实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。
示例 1:
输入:x = 2.00000, n = 10
输出:1024.00000
示例 2:
输入:x = 2.10000, n = 3
输出:9.26100
示例 3:
输入:x = 2.00000, n = -2
输出:0.25000
解释:2-2 = 1/22 = 1/4 = 0.25
public double myPow(double x, int n) {
long b = n;
double ans = 1.0;
// 由于 int 范围为 -2的31次 <= n <= 2的31次-1,所以 -n 可能会超出 int 能表示最大值,就用了 long
if(b < 0){
b=-b;
x=1/x;
}
while(b>0){
// 如果此时的 abcd 对应的是 1 就乘 x,否则其实就是乘以 1,所以可以跳过
if((b&1)==1)ans*=x;
// 累乘 x 得到下一个 x 的 y 次方(y 为 2 的 n 次)
x*=x;
// 等待下一位 abcd,因为 >> 相当于整除 2,所以循环结束条件就是 b > 0
b>>=1;
}
return ans;
}