每次将a的N次方拆分一半,拆分成 a的(N/2)次方 * a的(N/2)次方的形式。所以求a的N次方我们可以通过求出a的(N/2)次方得到。
但拆分需要考虑N的奇偶性。如果能完好拆分,就能通过a的(N/2)次方 * a的(N/2)次方计算a的N次方
否则只能通过a的(N/2)(向下取整)次方得出,另外还需要一个底数来补充,才能与a的N次方匹配。
特殊情况
-
当输入的指数为0时,无需进行递归,直接返回1。
-
当指数为负数时,求倒数,用1除以快速幂计算出来的结果
代码
–
class Solution:
def myPow(self, x: float, n: int):
快速幂运算
def quickMul(N):
if N == 1:
返回底数
return x
得到拆分后的值 向下取整
y = quickMul(N // 2)
print(y)
奇偶判断
if N % 2 == 0: