Pow(x, n) LeetCode 50题|刷题打卡

220 阅读1分钟

题目

题解

举例算x的4次方可以等于x的2次方乘以x的2次方x^4=x^2*x^2那么x的5次方就是在前面的基础上再乘以x。故如果n次方n是偶数时递归的调用,每次是n=n/2。就是myPow(x * x, n / 2)如果是奇数x * myPow(x * x, n / 2)再乘以x本身就好。如果n<0的时候x=1/x。n=-n由于有溢出代码中n=-(n+1)。

代码

public double myPow(double x, int n) {

    if (n == 0)
        return 1;
    if (n < 0) {
        return 1 / x * myPow(1 / x, -(n + 1));
    }
    return (n % 2 == 0) ? myPow(x * x, n / 2) : x * myPow(x * x, n / 2);
}

备注

本文正在参与「掘金 2021 春招闯关活动」, 点击查看