Implement pow(x, n).
用二分法~把x的n次方划分成两个x的n/2次方相乘,然后递归求解~注意n为负数的情况~代码复杂度为O(logn)~ 还可以加上越界的判断~
class Solution:
# @param x, a float
# @param n, a integer
# @return a float
def pow(self, x, n):
if n == 0: return 1
if n < 0:
return self.pow(1.0/x, -n)
half = self.pow(x, n >> 1)
half *= half
if n % 2 == 1:
half *= x
return half