https://blog.csdn.net/ustcer_93lk/article/details/80369990
double powerUnsign(double num, int exp) {
if (exp == 0) {
return 1;
}
if (num == 0) {
return 0;
}
if (exp == 1) {
return num;
}
int expInput = exp/2;
double result = powerUnsign(num, expInput);
result = result*result;
if (exp%2== 1) {
// s如果是基数
result = result * num;
}
return result;
}
double power(double num, int exp) {
if (exp == 0) {
return 1;
}
if (num == 0) {
return 0;
}
if (exp == 1) {
return num;
}
double expInput = exp;
if (exp < 0) {
// 幂先都转化为整数,方便计数 2^2 = 2*2 2^-2 = 1/2*2
expInput = -exp;
}
double result = powerUnsign(num, expInput);
if (exp < 0) {
result = 1/result;
}
return result;
}
double power1 = power(2, 2);
double power2 = power(2, -2);