普通分治题。需要注意n可正可负。
代码:
1 double pow(double x, int n) { 2 if (n == 0) return 1; 3 if (n == 1) return x; 4 if (n == -1) return 1 / x; 5 6 double half = pow(x, n / 2); 7 if (n % 2 == 0) 8 return half * half; 9 else 10 return half * half * (n > 0 ? x : 1 / x); 11 }