LeetCode:Pow(x, n) - 求指定數字x的整數次冪

一、題目名稱java

Pow(x, n)(求指定數字x的整數次冪)函數

二、題目地址code

https://leetcode.com/problems/powx-n/遞歸

三、題目內容leetcode

英文:Implement pow(x, n)開發

中文:給定底數x和指數n,求x的n次冪get

四、解題方法1io

在Java中,有一個偷懶的辦法是這樣實現的:class

/**
 * 功能說明: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);
    }
}

五、解題方法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

相關文章
相關標籤/搜索