题目描述
    给定一个 double 类型的浮点数 base 和 int 类型的整数 exponent,求 base 的 exponent 次方。

    解:

    1. public static double Power(double base, int exponent) {
    2. if (exponent == 0)
    3. return 1;
    4. if (exponent == 1)
    5. return base;
    6. // 取正
    7. int p = exponent < 0 ? -exponent : exponent;
    8. double r = 1.0;
    9. while (p > 0) {
    10. // 2进制p 末尾与 1
    11. if ((p & 1) > 0) {
    12. r *= base;
    13. }
    14. base *= base;
    15. // 向右位移
    16. p >>= 1;
    17. }
    18. // 如果 exponent 是负数要取倒数
    19. return exponent < 0 ? 1 / r : r;
    20. }