来源于《剑指offer》,但是书上用C写的,这里用Java实现,简单易懂
package algorithm;
/*
* @author weijie
* 实现了求解一个数的整数次方
* 采用二分幂递归的方式实现
* 参考数学模型,指数函数的按奇偶二分幂分段函数(二分之后递归特性就显现出来了)
* 注:这里的数未必是整数,也未必是正数,只是幂是整数而已,也就是说幂可能为负数
* @date 2018-11-07
*/
public class IntegerPowerOfNumber {
public static void main(String[] args)
{
System.out.println(integerPower(0,-3));
}
public static double integerPower(double base,int exponent)
{
if(exponent<0)
{
if(base==0) return 0.0;
exponent = 0-exponent;
double result = integerPower(base,exponent);
return 1l/result;
}
else
{
if(exponent==0||base ==1) return 1l;
double result =1l;
result = integerPower(base,exponent>>1);
result*=result;
if((exponent&1)==1) result*=base;
return result;
}
}
}