原题链接:https://leetcode.cn/problems/powx-n/
本来还以为一个循环就好了,结果超时了。
class Solution:
def myPow(self, x: float, n: int) -> float:
if n == 0:
return 1
ret = 1
jdz = abs(n)
for i in range(jdz):
ret = ret * x
if n < 0:
return 1 / ret
else:
return ret
计算这个不一定要一个一个乘,比如可以直接得到,如果采用递归的方法,由大到小分割,那就应该比较快
class Solution:
def myPow(self, x: float, n: int) -> float:
if n == 0:
return 1
def dg(k):
if k == 0: return 1
if k == 1: return x
tmp = dg(k // 2)
return tmp * tmp if k % 2 == 0 else tmp * tmp * x
temp = dg((abs(n)))
return temp if n > 0 else 1 / temp