Implement pow(x, n).
弱弱的说一句:其实在leetcode OJ上直接调用pow函数,也能通过。。。当然不是题目本意了。
如果按照幂运算的本质,应该x*x*x*x *。。。*x, n个x乘法,但是实际代码会time out,需要更简洁的算法。
比如: while n>0:
res = x * x
n -= 1
改进的算法是: 递归的采用乘方,其实就是加快乘的速度。 看n是多少个2的阶乘,再乘以其中的residue。 代码如下:
class Solution:
# @param x, a float
# @param n, a integer
# @return a float
def pow(self, x, n):
if n==0 :
return 1
elif n==1:
return x
elif n % 2:
return pow(x*x, n/2) * x
else :
return pow(x*x,n/2)