LeetCode:Pow(x,n)-指定した数xの整数次べき乗を求める


1、タイトル名
Pow(x,n)(指定数xの整数次べき乗を求める)
2、タイトルアドレス
https://leetcode.com/problems/powx-n/
3、テーマの内容
英文:Implement pow(x,n)
日文:与えられた底数xと指数n、xのn次べき乗を求める
4、解題方法1
Javaでは、サボる方法があります.
/**
 *     :LeetCode 50 - Pow(x, n) 
 *     :Tsybius2014
 *     :2015 8 8 
 */
public class Solution {
    
    /**
     *   x n  
     * @param x   
     * @param n   
     * @return  
     */
    public double myPow(double x, int n) {
        return Math.pow(x, n);
    }
}

5、解題方法2
本題入力は整数型であるため,nが整数の場合を考慮するだけである.関数Math.powを使用しない場合は、nが0より大きく、nが0より小さいことを分類して議論し、再帰的な方法を使用して重複乗算の演算を減らす必要があります.
/**
 *     :LeetCode 50 - Pow(x, n) 
 *     :Tsybius2014
 *     :2015 8 8 
 */
public class Solution {
    
    /**
     *   x n  
     * @param x   
     * @param n   
     * @return  
     */
    public double myPow(double x, int n) {
        
        //  ,      
        if (n == 0) {
            return 1;
        } else if (n == 1) {
            return x;
        } else if (n == -1) {
            return 1 / x;
        }
        
        //   n          
        double temp;
        if (n > 0) {
            temp = myPow(x, n / 2);
            if (n % 2 != 0) {
                return temp * temp * x;
            } else {
                return temp * temp;
            }
        } else {
            temp = 1 / myPow(x, -n / 2);
            if (n % 2 != 0) {
                return temp * temp / x;
            } else {
                return temp * temp;
            }
        }
    }
}

END