1. SwordON_16
    2. 快速幂运算
    3. double pow1(double x, long long nn) {
    4. if (nn == 0) {
    5. return 1;
    6. }
    7. if (nn == 1) {
    8. return x;
    9. }
    10. /* 先计算一般的幂值再平方 */
    11. double halfPow = pow1(x, nn / 2);
    12. return (nn % 2 == 0) ? (halfPow * halfPow) : (halfPow * halfPow * x);
    13. }
    14. double myPow(double x, int n) {
    15. if (x == 0 && n < 0) {
    16. return 0;
    17. }
    18. long long nn = n;
    19. return (nn < 0) ? (1 / pow1(x, -nn)) : pow1(x, nn);
    20. }