/* 数值的整数次方 可分为三种情况, n为负整数,n为0,n为正整数 1负整数: 需要将 x 转为 1/x , n 转为 -n 2为0 : 返回 1 3为正整数,考虑是偶数,还是奇数 偶数 : myPow(x,n) 转为 myPow(x * x , n/2) 奇数 : myPow(x,n) 转为 x * myPow(x * x,n/2) */ class Solution { public double myPow(double x, int n) { if(n == 0){ return 1; } if(n < 0){ //防止 -n 溢出,将 1/x 移出来一个 return 1/x * myPow(1 / x, -n-1); } return (n % 2 == 0) ? myPow(x * x,n / 2) : x * myPow(x * x,n / 2); } }