计算器工程的算法的核心算法
double myPowSlow(double x, int n) {
if (n == 0) {
return 1;
}
if (abs(x - 1.0) < 1e-8) {
return 1.0;
}
double product = x;
if (n > 0) {
for (int i = 1; i < n; i++) {
product = product * x;
}
}
if (n < 0) {
for (int i = 1; i < -n; i++) {
product = product * x;
}
product = 1.0 / product;
}
return product;
}
double myPow(double x, int n) {
if (n == 0) {
return 1;
}
if (n == 1) {
return x;
}
if (n < 0) {
return myPow(1 / x, -n);
}
if (n % 2 == 0) {
return myPow(x,n / 2) * myPow(x,n / 2);
} else {
return myPow(x,n - 1) * x;
}
}