pow(base, exponent)
考虑一下几种情况:
base = 0, 那么直接返回0
base = 1, 那么直接返回1
exponent = 0, 那么直接返回1, 注意base= 0
exponent = 1, 那么直接返回 base
exponent 为正为负 的情况
主要考察的点是将问题缩减,用折半的思想。这个题细节还是很多的,为了便于验证,leetcode上恰好有这个题,建议在线AC一下。
def equal(self, a, b):
return abs(a - b) < 1e-7
def pow(self, x, n):
if 0 == n and self.equal(x, 0):
return 0
if 0 == n: return 1
if 1 == n or self.equal(x, 1.0):
return x
pos = True
if n < 0:
pos = False
n = abs(n)
re = pow(x, n >> 1) * pow( x, n >> 1)
if n & 1:
re *= x
if pos == False:
re = 1.0/re
return re