- 题目描述
实现 pow(x, n) ,即计算 x 的 n 次幂函数。
说明:
-100.0 < x < 100.0
n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。
来源:LeetCode
- 示例
- 示例 1:
输入: 2.00000, 10
输出: 1024.00000 - 示例 2:
输入: 2.10000, 3
输出: 9.26100 - 示例 3:
输入: 2.00000, -2
输出: 0.25000
解释: 2-2 = 1/22 = 1/4 = 0.25
- 思路分析
看到这种大数,很容易想到不断将n变为n/2,直到n是一个足够小的数。如果n是负数,需要注意的特殊情况是n = −231, 此时如果直接将n变成-n,就会导致溢出。
- JAVA实现
class Solution {
public double myPow(double x, int n) {
if(n>0) return pow(x,n);
else if(n==0) return (double)1;
else {
if(n>Integer.MIN_VALUE) return 1/pow(x,-n);
else return 1/(pow(x,-(n+1))*x); //如果是最小值,直接取负会越界,导致变成0
}
}
public double pow(double x, int n) {
if(n==1) return x;
if(n==2) return x*x;
double ans = pow(x, n/2);
if(n%2==0)
return ans*ans;
else
return ans*ans*x;
}
}