解法2:根据奇偶幂分类(递归法,迭代法,位运算法)
-
如果n为偶数,则pow(x,n) = pow(x^2, n/2);
-
如果n为奇数,则pow(x,n) = x*pow(x, n-1)。
递归代码实现如下:
class Solution:
def myPow(self, x: float, n: int) -> float:
if n<0:
n = -n
return 1/self.help_(x,n)
return self.help_(x,n)
def help_(self,x,n):
if n==0:
return 1
if n%2 == 0: #如果是偶数
return self.help_(x*x, n//2)
如果是奇数
return self.help_(x*x,(n-1)//2)*x
迭代代码如下:
‘’’
Python大型免费公开课,适合初学者入门
加QQ群:579817333 获取学习资料及必备软件。
‘’’
class Solution:
def myPow(self, x: float, n: int) -> float:
judge = True
if n < 0:
n = -n
judge = False
final = 1
while n>0:
if n