刷题-力扣-50. Pow(x, n)
50. Pow(x, n)
题目链接
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/powx-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/22 = 1/4 = 0.25
提示:
- -100.0 < x < 100.0
- -231 <= n <= 231-1
- -104 <= xn <= 104
题目分析
- 根据题目描述模拟pow的功能
- 使用降幂和递归,即pow(x, n*2) = pow(x, n) * pow(x, n)
代码
class Solution {
public:
double myPow(double x, int n) {
if (n == INT_MIN) return (x == 1 || x == -1) ? 1 : 0;
if (x == 1) return 1;
if (x == -1) return n % 2 ? -1 : 1;
if (n ==0) return 1;
else if (n > 0) {
if (n % 2) return myPow(x, n - 1) * x;
else return myPow(x * x, n / 2);
} else return 1 / myPow(x, -n);
}
};