题目
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);
}
};
以上方法来自力扣官方题解
标签:return,Offer,int,double,16,traversal,次方 From: https://www.cnblogs.com/fly-smart/p/17641680.html