题目:
思路1:
既然用python的话,就可以当一次高级调用工程师了(逃
直接pow函数求解
代码如下:
class Solution:
def myPow(self, x: float, n: int) -> float:
result = pow(x, n)
return result
思路2:
上面那个在面试的时候千万不要用嗷,不然就是回家等通知了(误
回归正题,假设现在要计算x13,那可以将其分解成x8 * x4 * x1,也就是利用分治的思想,将大问题划分成小问题的结合去解决
因此本题可以先递归计算xn/2 ,然后根据递归的结果判断N的奇偶,if N % 2 == 0
,那么return y*y
,否则return y * y * x
,然后定义N为0时,return 1
代码如下:
class Solution:
def myPow(self, x: float, n: int) -> float:
def quickMul(N):
if N == 0:
return 1.0
y = quickMul(N // 2)
if N % 2 == 0:
return y * y
else:
return y * y * x
if n>= 0:
return quickMul(n)
else:
return 1.0 / quickMul(-n)