1、http://blog.csdn.net/nerv3x3/article/details/3465663
二分法一步步分解,并使用递归的方法:
幂运算可以利用二分的方法来做。也就是x^n = x ^ (n /2) * x ^(n / 2) (n %2 == 0)或者x^n = x ^ (n /2) * x ^(n / 2) * x(n %2 == 1)。要注意的时候,当n < 0 的时候,x ^ n =1 / (x ^(-n))。
class Solution(object):
def myPow(self, x, n):
"""
:type x: float
:type n: int
:rtype: float
"""
if(n<0):
return 1.0/self.myPow(x,-n)
if n==0:
return 1.0
if n==1:
return x
tmp = self.myPow(x,n/2)
if n%2==0:
return tmp*tmp
else:
return tmp*tmp*x
如果没有使用tmp这个变量临时存储self.myPow(x,n/2),而是使用self.myPow(x,n/2)* self.myPow(x,n/2)的话,式子计算了两遍,增加了运算时间,容易造成超时(time limit exceed)。
注意调用函数要用self.func()。可以在一个类里面相互调用函数。