求a的b次幂。
比较简单的方法是a乘以a,做b次(当b为正数时)。
如果b为偶数,那么a×a只要乘b/2次(减少了相乘的次数) b为奇数,a×a乘(b-1)/2次,再乘a。
不考虑b为负数的情况,采用递归。
private double Power(double a, int b) {
if (b<0) {
throw new ApplicationException("B must be a positive integer or zero");
}
if (b==0) return 1;
if (a==0) return 0;
if (b%2==0) {
return Power(a*a, b/2);
} else if (b%2==1) {
return a*Power(a*a,b/2);
}
return 0;
}
下面考虑b为负数的情况,用迭代的方式实现。
double intpow(double a,int b)
{
if(a==0) return error;
if(b<0)
{
a=1.0/a;
b=-b;
}
double result=1.0;
while(b)
{
if(b&1)
result*=a;
a*=a;
b>>=1;
}
return result;
}