数值的整数次方 剑指offer java实现
题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
解题思路(借用牛客网网友的图)
关键代码部分
(结合网友的代码,自己改动了一下,使代码逻辑更加清晰)
public class Solution {
public double Power(double base, int exponent) {
if(base==0.0){
if(exponent>0){
return 0.0;
}else if(exponent==0){
throw new RuntimeException("未定义");
}else{
throw new RuntimeException("底数为0 指数为负数");
}
}else{
if(exponent>0){
return PowerII(base,exponent);
}else if(exponent==0){
return 1;
}else{
return 1/(PowerII(base,-exponent));
}
}
}
public double PowerII(double base, int exponent){
double result=1;
while(exponent!=0){
if((exponent&1)==1){
result*=base;
}
base*=base;
exponent>>=1;
}
return result;
}
}