50. Pow(x, n) (MATH)

用二分法recursively的解决这道题 否则会有runtime error

 

 1 class Solution {
 2     public double myPow(double x, int n) {
 3         if(n == 0) return 1;
 4         if(n < 0) { //注意MAX_INT < - MIN_INT 所以不能直接-n 否则会overflow
 5             x = 1 / x;
 6             return (n % 2 == 0) ? myPow(x * x, -(n / 2)) : x * myPow(x * x, -(n / 2));
 7         }
 8         return (n % 2 == 0) ? myPow(x * x, n / 2) : x * myPow(x * x, n / 2);
 9         
10     }
11 }

 

posted @ 2018-08-27 03:36  jasoncool1  阅读(144)  评论(0编辑  收藏  举报