原题链接:leetcode-cn.com/problems/po…
解题思路:
- 对该题不了解的同学,可以参考一下维基百科中对幂的介绍。
- 求x的n次幂,只要将x乘n次即可。
- 求x的-n次幂,只要将1除以x n次即可。
- x为0、1、-1时,n次幂都为固定值,可以直接返回响应结果。
- n为-2147483648时会超时,直接返回0即可。
/**
* @param {number} x
* @param {number} n
* @return {number}
*/
var myPow = function (x, n) {
// 0和1的n次幂都为其本身
if (x === 0 || x === 1) {
return x;
}
// 负1的偶数幂为1,奇数幂为-1
if (x === -1) {
return n % 2 ? -1 : 1;
}
// 特殊处理会超时的Case
// 或者可以写成n === -0x80000000
if (n === -2147483648) {
return 0;
}
let result = 1; // 初始值为1
const len = Math.abs(n); // 需要计算的次数,n有可能为负,因此要取绝对值
for (let i = 0; i < len; i++) {
result =
n > 0
? result * x // n>0时即乘n次
: result / x; // n>0时即/除n次
}
return result;
};