给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
思路:最优的做法,利用移位,当用户为偶次幂时,只要计算出exponent/2的结果,然后将两数相乘就可以了,当用户为奇数次幂时,将相乘的结果再乘以一次底数base就可以了。
C++:
double Power(double base, int exponent) {
double res;
if(exponent==0)
return 1;
if(exponent==1)
return base;
int exponent1 = abs(exponent);
res=Power(base,exponent1>>1);//exponent/2
res*=res;
if(exponent & 0x1==1)//如果为奇数次方,再乘以一次底
res*=base;
if(exponent<0)
res=1/res;
return res;
}
python:普通做法
def Power(self, base, exponent):
if base==0:
return 0
elif exponent==0:
return 1
elif exponent==1:
return base
else:
return pow(base,exponent)