1. 题目描述
实现 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
提示:
这道题直接的思路就是暴力计算,判断n的正负,如果为正就让底数x直接累乘,如果为负就让底数的倒数1/x累乘。
但是超出了时间限制,可以使用二分法进行优化:**
我们可以进行折半计算,每次将n缩小一半,通过递归最终获得结果。注意,当n为奇数时,需要多乘一次x的值。
3. 代码实现
暴力:
/*** @param {number} x* @param {number} n* @return {number}*/var myPow = function(x, n) {if(n === 0){return 1}const base = n > 0 ? x : 1/xlet result = 1for(let i = 1; i <= Math.abs(n); i++){result = result * base}return result};
二分法:
/*** @param {number} x* @param {number} n* @return {number}*/var myPow = function(x, n) {if(n === 0){return 1}else if(n === 1){return x}else if(n === -1){return 1/x}const base = n > 0 ? x : 1/xconst half = parseInt(n/2, 10)let result = myPow(x, half)if(n % 2){return base * result * result}return result * result};
4. 提交结果
二分法:
