实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。
示例 1:
输入: 2.00000, 10
输出: 1024.00000
示例 2:
输入: 2.10000, 3
输出: 9.26100
示例 3:
输入: 2.00000, -2
输出: 0.25000
解释: 2-2 = 1/22 = 1/4 = 0.25
方法(采用递归)
分析:
在n为正数的情况下
=*
=x^{2}$$*x^{2}*
在n为负数的情况下,只需要计算出它的绝对值,然后再1/,就可以计算出它的值
代码
/**
* @param {number} x
* @param {number} n
* @return {number}
*/
var myPow = function(x, n) {
let res=calculation(x,Math.abs(n))//计算n的绝对值
//当n>0时,直接计算x^n,当n<0时,计算1/x^n
return n>0?res:1/res;
};
function calculation(x,n){
if(n===0) return 1;//指数为0时,为1
if(n===1) return x;//指数为1时,为基值
//递归计算x^n的一半,x^(n/2)
let half=calculation(x,Math.floor(n/2));
//n如果为奇数,返回half*half*x;n如果为偶数,返回half*half
return n%2?half*half*x:half*half
}