/**
*
* 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,x^n)。
*
*/
/**
*
* @param x 要计算的底数
* @param n 制数部分
* @return 返回计算的结果
*/
public double myPow(double x, int n) {
//如果n为负数,则只需要取正数幂的倒数即可
long N = n;
//判断n的正负,如果n为正数,则直接计算,否则取倒数
return N >= 0 ? calculate(x, N) : 1.0 / calculate(x, N);
}
/**
* 编写方法,假设N为正整数,计算x^N
* @param x 底数
* @param N 假设N为正数,计算x 的N次方
* @return 返回计算的结果
*/
public double calculate(double x, long N) {
//递归结束的条件
if (N == 0) {
return 1.0;
}
//递归调用
double y = calculate(x, N / 2);
//如果N为偶数,则返回 y * y 如果N为奇数,则还有乘以x
return N % 2 == 0 ? y * y : y * y * x;
}
原文:https://www.cnblogs.com/mx-info/p/14824533.html