【剑指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