题目
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
解题思路
可以用递归求解。
如果exponent是偶数,
则Power(base,exponent)=Power(base,exponent/2)*Power(base, exponent/2)。
如果exponent是奇数,
则Power(base,exponent)=Power(base,(exponent-1)/2)*Power(base, (exponent-1)/2)*base。
注意点
这里要注意的是exponent还可以为负数,负数的情况需要稍微改变一下就可以了。
public class Solution {
public double Power(double base, int exponent) {
if(exponent>0){
if(exponent==1) return base;
if((exponent%2)==0){
exponent=exponent/2;
double result=Power(base,exponent);
return result*result;
}else{
exponent=(exponent-1)/2;
double result=Power(base,exponent);
return result*result*base;
}
}else if(exponent==0){
return 1;
}else{
if(exponent==-1) return 1/base;
if((exponent%2)==0){
exponent=exponent/2;
double result=Power(base,exponent);
return result*result;
}else{
exponent=(exponent+1)/2;
double result=Power(base,exponent);
return result*result*1/base;
}
}
}
}