目录
力扣50. Pow(x, n)
解析代码
力扣50. Pow(x, n)
50. Pow(x, n)
难度 中等
实现 pow(x, n) ,即计算 x
的整数 n
次幂函数(即,xn
)。
示例 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/2^2 = 1/4 = 0.25
提示:
-100.0 < x < 100.0
-2^31 <= n <= 2^31-1
n
是一个整数- 要么
x
不为零,要么n > 0
。 -10^4 <= xn <= 10^4
class Solution {
public:double myPow(double x, int n) {}
};
解析代码
循环迭代会超时,递归就是先求n/2次方,然后分情况讨论,要注意边界情况:
class Solution {
public:double myPow(double x, int n) { // long long 防-2^31变成正数溢出return n < 0 ? 1 / _myPow(x, -(long long)n) : _myPow(x, n);}double _myPow(double x, long long n){if(n == 0)return 1;double tmp = myPow(x, n / 2);return n % 2 == 0 ? tmp*tmp : tmp*tmp*x;}
};