题目描述
实现 pow(x, n) ,即计算 x 的 n 次幂函数。
示例1:
输入: 2.00000, 10
输出: 1024.00000
示例2:
输入: 2.00000, -2
输出: 0.25000
解释: 2-2 = 1/22 = 1/4 = 0.25
思路
1.一个数的负数幂等于1除以这个数的正数幂,例如:2^-4 = 1/(2^4)。
2.若N是偶数,则 x^N = (x^N/2 )* (x ^ N/2);若N是奇数,则 x^N = (x^N/2 )* (x ^ N/2)*x。
3.所有自然数的0次幂等于1.0。
4.可以使用递归,快速求出x的N次幂。
Java代码实现
public double myPow(double x, int n) {
x = n >= 1 ? x : (1.0/x);
return myPowFast(x,Math.abs(n));
}
private double myPowFast(double x ,int n){
if(n == 0)
return 1.0;
double half = myPowFast(x,n/2);
if(n % 2 == 0)
return half*half;
else
return half*half*x;
}
网友评论