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
[剑指offer]Q11:数值的整数次方
时间: 2024-11-07 22:05:48