题目:
实现函数power(base,exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题
思路:
需要考虑1.非法情况,2. 指数为负情况
- 指数为负数时,可以先对指数求绝对值,算出结果再取倒数。
- 既然指数为负数时求倒数,分母为0就非法。故当底数是0且指数是负数时,需进行特殊处理
代码:
class Solution:
def Power(self, base, exponent):
# 非法base=0 exponent < 0
if self.equal(base, 0.0) and exponent<0:
return 0.0
# exponent < 0
if exponent < 0:
base = 1/base
exponent = -exponent
result = self.PowerWithExponent(base, exponent)
return result
def PowerWithExponent(self, base, exponent):
if exponent == 0:
return 1
if exponent == 1:
return base
# 偶数
result = self.PowerWithExponent(base, exponent>>1)
result *= result
# 奇数
if exponent&1 == 1:
result *= base
return result
def equal(self, num1, num2):
if num1-num2> -0.0000001 and num1-num2 < 0.0000001:
return True
else:
return False