题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
ps:保证base和exponent不同时为0
思路
看到这题目,心里一个?,直接一行代码上去了
代码语言:javascript复制public double Power(double base, int exponent) {
return Math.pow(base,exponent);
}
哈哈哈,冷静下来感觉不能这么莽,这不快速幂嘛
下面这块代码考虑了分子为负数以及分子分母同为0的情况; 关于与运算和位运算的使用可以参考下面的链接
代码语言:javascript复制 public double Power(double base, int exponent) {
double res=1;
boolean negative=false;
if (exponent==0){
if (base==0){
throw new RuntimeException("分母不能为0");
}
}else if (exponent<0){
negative=true;
exponent*=-1;
}
while (exponent>0){
if ((exponent&1)==1){
res*=base;
}
base*=base;
exponent>>=1;
}
return negative?1/res:res;
}
关于快速幂可以参考https://blog.csdn.net/qq_19782019/article/details/85621386,非常详细,一步步优化真棒