剑指 Offer 16. 数值的整数次方(中等)

孜孜不倦fly / 2023-08-19 / 原文

题目

class Solution {
public:
    double traversal(double x, int n){
        if(n==0) return 1.00000;
        double y = traversal(x, n/2);      //本题需要对递归时的指数进行二分法,否则超时。
        return n%2==0 ? y*y : y*y*x;      //y=(x^4)。n=8,则x^8=y*y;n=9,则x^9=y*y*x。
    }
    double myPow(double x, int n) {
        if(n<0) x = 1/x;      //先进行指数正负的判断
        return traversal(x, n);
    }
};

以上方法来自力扣官方题解