50. Pow(x, n)
实现 pow(x, n) ,即计算 x 的 n 次幂函数。
思路:快速幂 + 迭代
class Solution {
public double myPow(double x, int n) {
double res = 1.0;
long i = n > 0 ? n : -n;
while(i != 0) {
//n的二进制表示的最后一位数不为0 -> (n & 1) != 0 最后一位不为0 ,就要执行 res *= x;
if((i & 1) == 1) {
res = res * x;
}
//x变平方
x *= x;
// 二进制数往右移动1位,相当于除于2,但是右移是除2取整(舍弃小数部分),这里使用右移操作会超时
// i = i >> 1;
i /= 2;
}
return n < 0 ? 1 / res : res;
}
}