字面意思,看起来很简单的一件事,最先想到的就是powerWithExponend里面写的情况,以为这就完了。看别人代码的时候才发现这么多问题没有考虑到,先是equal的重定义,后是exponent的取值的三种情况,在后面是base是否取零的两种情况。
还是太年轻!
public class Solution {
public double powerWithExponend(double base,int exponent){
double res = 1.0;
for(int i = 1; i <= exponent; i++){
res *= base;
}
return res;
}
public boolean equal(double num1, double num2) {
if(Math.abs(num1 - num2) < 0.0000001){
return true;
}
return false;
}
public double Power(double base, int exponent) {
double res = 0.0;
if(equal(base, 0.0) && exponent <0){
try{
throw new Exception("没有意义");
}catch(Exception e){
e.printStackTrace();
}
}
if(exponent == 0){
return 1.0;
}else if(exponent < 0){
return powerWithExponend(1/base, -exponent);
}else {
return powerWithExponend(base,exponent);
}
}
}