欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

50. Pow(x, n)

程序员文章站 2022-07-15 12:47:57
...

50. Pow(x, n)

链接:https://leetcode-cn.com/problems/powx-n/

class Solution {                                                                                    
    public:                                                                                         
        double myPow(double x, int n) {                                                             
            if (n == 1) return x;                                                                   
            if (n == 0) return 1;
            if (n<0 && n==INT_MIN) {
                return 1/myPow(x, INT_MAX)*x;
            }
            if (n<0) {
                return 1/myPow(x, -n);
            }
            if (n&1) {                                                                                
                return x*myPow(x, n-1);                                                               
            }                                                                                         
            return myPow(x*x, n>>1);                                                                  
        }                                                                                             
};

50. Pow(x, n)

 

class Solution {                                                                                    
    public:                                                                                         
        double myPow(double x, int n) {                                                 
            double result = 1;                    
            if (n < 0) { 
                x = 1/x;
                if (n == INT_MIN) {
                    result *= x;
                    n = INT_MAX;
                } else {
                    n = -n;                       
                }    
            }                                                                                       
                                                                                     
            while(n) {                                                                              
                // n是奇数                                                                          
                if(n&1) {                                                                           
                    result *= x;                                                                    
                }                                                                                   
                x *= x;                                                                             
                n >>= 1;                                                                            
            }                                                                                       
            return result;                                                                                    
        }                                                                                           
};

50. Pow(x, n)