思路:如果遍历累乘的话,时间复杂度为O(n),
但是用递归的话可以做到O(logn)的复杂度
举个栗子:
2^8 = 2^4 * 2^4
2^4=2^2 * 2^2
2^2 = 2 * 2
需要注意的两种情况
是当指数为0的时候,直接返回1
当指数为负数的时候,去绝对值,返回 1/result
耗时比遍历快了进10毫秒
# -*- coding:utf-8 -*-
class Solution:
def Power(self, base, exponent):
# write code here
if exponent == 0:
return 1
if exponent < 0:
return 1/self.mi(base, abs(exponent))
return self.mi(base, exponent)
def mi(self,base,exponent):
if exponent == 1:
return base
if exponent%2:
return base * self.mi(base,exponent/2)*self.mi(base,exponent/2)
else:
return self.mi(base,exponent/2)*self.mi(base,exponent/2)
京公网安备 11010502036488号