LC50 Pow(x,n)
 
1 class Solution { 2 public: 3 double _pow(double x,int n) 4 { 5 if(n==0) 6 return 1; 7 double tmp=_pow(x,n/2); 8 return (n%2==0)?(tmp*tmp):(tmp*tmp*x); 9 } 10 double myPow(double x, int n) { 11 return (n>=0)?_pow(x,n):(_pow(1/x,-n)); 12 } 13 };
这道题有个小陷阱,就是代码中必须用(n%2==0)来判断而不能用(n%2==1)来判断。
因为n=-2147483648时,-n=-2147483648,如果用(n%2==1)来判断,在递归的时候会遇到某些负奇数,它们应该算是归类到(n%2==1)的那一类,但由于负奇数%2==-1, 所以会造成不正确的判断。而(n%2==0)则没有这个问题。
 
                     
                    
                 
                    
                 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号