12. 数值的整数次方
题目
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0。
解题思路
看到题目的时候我还在寻思,这玩意儿就是调函数咩(俺就是调参侠 )看了大佬们的题解总结了一些。
- 直接调参
- 暴力解法
- 二分法
代码实现
1.直接调参
public double Power(double base, int exponent) {
return Math.pow(base,exponent);
}
2.暴力解法
public double Power_2(double base, int exponent){
if (base == 0){
return 0;
}
if (exponent == 0){
return 1;
}
double result = base;
boolean sign = true;
if(exponent<0){
sign = false;
exponent = Math.abs(exponent);
}
for (int i=1; i < exponent; i++) {
result *= base;
}
return sign?result:1/result;
}
3.二分法
public double Power_3(double base,int exponent){
if (base == 0){
return 0;
}
if (exponent == 0){
return 1;
}
boolean sign = true;
if(exponent < 0){
sign = false;
exponent = Math.abs(exponent);
}
double result = 0;
if(exponent % 2 == 0){
result = Power_3(base,exponent/2)*Power_3(base,exponent/2);
}
else{
result = base*Power_3(base,exponent/2)*Power_3(base,exponent/2);
}
return result;
}