题目
实现函数double Power(double base, int exponent),求base的 exponent次方。
不得使用库函数,同时不需要考虑大数问题。
注意:
不会出现底数和指数同为0的情况
当底数为0时,指数一定为正
样例1
输入:10 ,2
输出:100
样例2
输入:10 ,-2
输出:0.01
算法
二分法 如果exponent为偶数 Power(base,exponent)=Power(base,exponent/2)Power(base,exponent/2),如果exponent为奇数 Power(base,exponent)=basePower(base,exponent/2)
class Solution {
public double Power(double base, int exponent) {
if(base == 0) return 0;
int abs = exponent>0?exponent:-exponent;
if(abs == 0){
return 1;
}
if(abs == 1){
return exponent>0?base:1/base;
}
double result = Power(base,abs>>1);
return exponent>0?(abs%2 == 0?result*result:result*result*base):(1/(abs%2 == 0?result*result:result*result*base));
}
}