题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
function Power(base, exponent)
{
// write code here
//方法一:调用幂函数
//return Math.pow(base,exponent);
//方法二:效率优化
//连乘时间复杂度O(n)
//当指数exponent很大时,选择快速幂算法,时间复杂度O(logn)
//例如:2^13;指数13=1101(二进制数表示)
var isGZero=true;//对指数进行判断,决定返回结果是res,还是res的倒数
var res=1;
if(exponent==0)
return 1;//任何数的0次幂都为1
if(exponent<0){
exponent=-exponent;//指数设置为正的
isGZero=false;
}
while(exponent>0){
if(exponent&1==1){//从指数二进制表示的低位开始计算;可以减少连乘次数
res*=base;
}
base*=base;
exponent>>=1;
}
return isGZero?res:(1/res);
}