原本感觉很简单,写出来之后时间复杂度太高了,上网查了一下,普遍应用的是二分法:
xn = xn/2 * xn/2 * xn%2
时间复杂度:O(logN)
代码很简单,思想很重要。
class Solution:
# @param x, a float
# @param n, a integer
# @return a float
def power(self,x,n):
if n==0:
return 1
half=n/2;
res_temp=self.power(x,half)
if n%2:
return res_temp*res_temp*x
else:
return res_temp*res_temp
def pow(self, x, n):
if x==0:
return 0
if n<0:
return 1.0/self.power(x,-n)
else:
return self.power(x,n)