【剑指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
京公网安备 11010502036488号