您的位置:首页 > Web前端

剑指offer-数值的整数次方

2017-08-29 01:40 411 查看
public class 面试题16 {

public static double Power(double base, int exponent) throws Exception {
double result = 0.0;
if (base == 0.0 && exponent < 0)
throw new Exception("非法输入");
boolean abs = false;
if (exponent < 0) {
abs = true;
exponent = Math.abs(exponent);
}
result=PowerWithUnsignExponent(base, exponent);
if (abs==true) {
result=1.0/result;
}
return result;
}

public static double PowerWithUnsignExponent(double base, int exponent){
double result=1,b=base;
while (exponent!=0) {
if((exponent&1)!=0)
result*=b;
b*=b;
exponent>>=1;
}
return result;
}
}


要考虑特殊指数负值,零值的特殊情况

利用快速幂计算乘方能将时间复杂度降为O(logn)

用循环代替递归,减少对栈的消耗
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: