数值的整数次方
实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。
示例 1:
输入:x = 2.00000, n = 10
输出:1024.00000
1
2
2
/**
* @param {number} x
* @param {number} n
* @return {number}
*/
// 相当于不断拆分计算
// 例如 2 7
// 2 * 2^6
// 2 * (2^2)^3
// 2^3 * (2^2)^2
// 2^3 * (2^4)^1
// 最后输出 2^3 * 2
var myPow = function(x, n) {
if(n === 0) return 1
if(n === 1) return x
if(n < 0) return myPow(1/x, -n)
let ans = 1
while(n > 1) {
if(n & 1 === 1) {
ans = ans * x
n--
}
x = x * x
n = n/2
}
return ans*x
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/shu-zhi-de-zheng-shu-ci-fang-lcof