方法一:暴力法
class Solution:
def myPow(self, x: float, n: int) -> float:
if n < 0 :
n = -n
x = 1 / x
res = 1
for _ in range(n) : # _表示只循环,不使用变量
res *= x
return res
方法二:递归
class Solution:
def myPow(self, x: float, n: int) -> float:
if n < 0 : return 1/self.myPow(x,-n)
if n == 0 : return 1
if n % 2 == 0 :
return self.myPow(x*x,n//2) # //表示向下取整
else :
return self.myPow(x*x,n//2) * x
方法三:迭代
class Solution:
def myPow(self, x: float, n: int) -> float:
if n < 0 :
n = -n
x = 1 / x
if n == 0 : return 1
res = 1
while n :
if n % 2 == 0 : #一直除于2一定会出现奇数的情况 所以为偶数时没用res
n //= 2
x *= x
else :
res *= x
n -= 1
return res