题目:
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
思路:
考虑以下几种情况:
- base=0时,0的任意次方都为0
- base=1时,1的任意次方都为1
- exponent=0时,任何数的0次方都为1
- exponent<0时, baseexponent =1 / baseexponent
- n为偶数时,baseexponent = baseexponent/2*baseexponent/2;
n为奇数时,baseexponent = baseexponent/2*baseexponent/2*base
按照上述思路进行编码,代码如下:
double Power(double base, int exponent) {
if(base==0)
return 0;
if(base==1||exponent==0)
return 1;
int e = abs(exponent);
double res = Power(base,e>>1);
res *=res;
if(e&1==1)//判断e是否为奇数,是奇数则最低位的值为1
res *=base;
if(exponent<0)
res = 1/res;
return res;
}