同一个数连乘问题
今天再看网易公开课上的算法导论,其中提到了这个pow(double x,int n)可以采用分治法。这里实现一下:
/**
* 分治法求解pow(double x,int n)
* 参考:*http://blog.csdn.net/u012162613/article/details/41361655
*
* */
public static double pow(double x, int n) {
if (n == 0) {
return 1.0;
} else if (n < 0) {
if (n == Integer.MIN_VALUE) {
double value = pow(x, -n / 2);
return 1.0 / (value * value);
} else {
return 1.0 / pow(x, -n);
}
} else {
if ((n & 1) == 1) {
return x * pow(x, n - 1);
} else {
double value = pow(x, n / 2);
return value * value;
}
}
}
java中该函数的原型其实是static native double pow(double a, double b),由于指数是double类型,那么底层到底如何实现的呢?