public double myPow(double x, int n) { if (n == 0) { return 1; } if (n < 0) { // n为负数 -1是因为需要解决溢出问题(Integer.MAX_VALUE), n<0此行代码执行一次 然后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); }