题目:
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
public class Solution {
public double Power(double base, int exponent) {
double i=1.0;
if(exponent>0){
for(int j=0;j<exponent;j++){
i=i*base;
}
}
if(exponent<0){
i=1/base;
for(int j=1;j<-exponent;j++)
i=i*(1/base);
}
return i;
}
}
功能测试,边界条件,负面测试以确保代码的完整性 错误处理方法:
- 用返回值来告知是否出错;
- 设置一个全局变量;
- 异常;
public class Solution {
public double Power(double base, int exponent) {
//判断有可能出错的试例
if(base==0.0&&exponent<0){
return 0.0;
}
if(exponent==0){
return 1.0;
}
double answer=1.0;
if(exponent>0){
for(int i=0;i<exponent;i++){
answer*=base;
}
}
if(exponent<0){
for(int i=0;i<-exponent;i++){
answer*=(1/base);
}
}
return answer;
}
}
public class Solution {
public double Power(double base, int exponent) {
int mul=0;
if(exponent==0){
return 1;
}
if(exponent<0){
mul=-exponent;
}
if(exponent>0){
mul=exponent;
}
double answer=1.0;
while(mul!=0){
if((mul&1)==1){
answer*=base;
}
base*=base;
mul>>=1;
}
return exponent>0?answer:(1/answer);
}
}