#include <stdio.h>
double myPow(double x, int n) {
if (n == 0) {
return 1;
}
if (n < 0) {
x = 1 / x;
n = -n;
}
double res = 1;
while (n > 0) {
if (n & 1) {
res *= x;
}
x *= x;
n >>= 1;
}
return res;
}
int main() {
double x = 2.0;
int n = 10;
printf("%lf\n", myPow(x, n));
return 0;
}
这里使用了快速幂算法,时间复杂度为O(logn)。