LeetCode50. Pow(x, n)
1 题目
实现 Pow(x, n), 即计算 x 的整数 n 次幂函数(即,$x^n$)。
示例 1:
输入:x = 2.00000, n = 10
输出:1024.00000
示例 2:
输入:x = 2.10000, n = 3
输出:9.26100
示例 3:
输入:x = 2.00000, n = -2
输出:0.25000
解释:2-2 = 1/22 = 1/4 = 0.25
提示:
-100.0 < x < 100.0
-231 <= n <= 231-1
-104 <= xn <= 104
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/powx-n
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2 解析
递归分治法,如果n是1,则返回1,如果是负数,就是求正的分之一,如果是正数,分为两种情况,是奇数,拆出一个x出来,剩余的n-1次幂是偶数继续递归。是偶数,分为两部分乘积,对n对半去递归求解。例如求 $x^4$拆分为$x^2 × x^2$。
3 Python实现
class Solution:
def myPow(self, x: float, n: int) -> float:
if n==0:
return 1
if n<0:
return 1 / self.myPow(x,-n)
if n%2:
return x*self.myPow(x,n-1)
return self.myPow(x*x,n/2)