一、題目名稱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