题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方
保证base和exponent不同时为0
解法一:调函数(C++)
class Solution {
public:
double Power(double base, int exponent) {
double b;
if(exponent>=0)
{
b = pow(base, exponent);
}
else
{
b = pow(base, -exponent);
b = 1/b;
}
return b;
}
};
解法二:简单快速幂(Python)
参考 简单快速幂的使用方法
# -*- coding:utf-8 -*-
class Solution:
def Power(self, base, exponent):
# write code here
if base == 0:
return 0
if exponent == 1:
return base
e = abs(exponent)
tmp = base
res = 1
while(e>0):
if(e&1==1):
res = res * tmp
e = e >> 1
tmp = tmp * tmp
return res if exponent > 0 else 1 / res
其中 e & 1 指取e的二进制数的最末位,而e = e >> 1,即右移1位,删去最低位。