【剑指offer】数值的整数次方(python)

分治思想
将原问题拆分成多个规模较小的子问题,最后将子问题的解合并起来。
本题子问题是 x^{n/2},如果 n 不为偶数,拆成两半还剩下一个 x,将子问题合并时还需多乘一个 x。

# -*- coding:utf-8 -*-
class Solution:
    def Power(self, base, exponent):
        # write code here
        isNegative = False
        if exponent < 0:
            exponent = -exponent
            isNegative = True
        res = self.pow(base, exponent)
        return 1/res if isNegative else res
    def pow(self,x,n):
        if n == 0: return 1
        if n == 1: return x
        res = self.pow(x, n/2)
        res *= res
        if n%2 != 0: res *= x
        return res