Skip to main content

pow-x-n

题目

实现 pow(x, n), 即计算 xn 次幂函数.

提示:
  • -100.0 < x < 100.0
  • -2³¹ <= n <= 2³¹-1
  • n 是一个整数
  • -10⁴ <= xⁿ <= 10⁴
示例
输入: `x = 2.00000`, `n = 10`

输出: `1024.00000`
输入: `x = 2.00000`, `n = -2`

输出: `0.25000`

题解

/**
* @param {number} x
* @param {number} n
* @return {number}
*/
var myPow = function (x, n) {
// 考虑负数情况, 即变为倒数
if (n < 0) {
x = 1 / x
n = -n
}

let res = 1

while (n) {
//判断 n 的二进制最后一位是否是 1, 如果是 1 则将结果乘以 x
if (n & 1) res *= x

x *= x

// 进行无符号右移 1 位, 相当于此处不能使用有符号右移 >>
// 因为当 n 为 -2^31 转换成正数时的二进制位 10000000000000000000000000000000
// 如果采用有符号右移时会取最左侧的数当符号即 1, 导致返回的结果是 -1073741824
n >>>= 1
}

return res
}