题目
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
思路
1.找边界条件出口
2.判断指数是否正负
3.将指数exponent降为二分之一,再递归求解,复杂度为O(logn)
代码
public class Solution {
public double Power(double base, int exponent) {
//1.边界值判断 2.把x的n次方转化成x*x的n/2次方-降低复杂度
if(exponent==0){
return 1;
}
if(exponent==1){
return base;
}
boolean flag = false;
if(exponent<0){
exponent=-exponent;
flag=true;
}
double res = Power(base*base,exponent/2);
if(exponent%2!=0){
res = res*base;
}
if(flag){
return 1/res;
}
return res;
}
}
总结
1.把exponent次方按偶数次方和奇数次方分开划分