LeetCode0050-Pow(x,n)
阿新 • • 發佈:2020-12-25
技術標籤:LeetCodeleetcode演算法javapow 函式快速冪
LeetCode0050-Pow(x,n)
題目:
實現 pow(x, n) ,即計算 x 的 n 次冪函式。
示例 1:
輸入: 2.00000, 10
輸出: 1024.00000
示例 2:
輸入: 2.10000, 3
輸出: 9.26100
示例 3:
輸入: 2.00000, -2
輸出: 0.25000
解釋: 2-2 = 1/22 = 1/4 = 0.25
說明:
-100.0 < x < 100.0
n 是 32 位有符號整數,其數值範圍是 [−231, 231 − 1] 。
程式碼:
/**
* 0050-Pow(x,n)
* 實現 pow(x, n) ,即計算 x 的 n 次冪函式。
* <p>
* 示例 1:
* <p>
* 輸入: 2.00000, 10
* 輸出: 1024.00000
* <p>
* 示例 2:
* <p>
* 輸入: 2.10000, 3
* 輸出: 9.26100
* <p>
* 示例 3:
* <p>
* 輸入: 2.00000, -2
* 輸出: 0.25000
* 解釋: 2-2 = 1/22 = 1/4 = 0.25
* <p>
* 說明:
* <p>
* -100.0 < x < 100.0
* n 是 32 位有符號整數,其數值範圍是 [−231, 231 − 1] 。
*/
/**
* 快速冪+遞迴
*/
class Solution {
public double myPow(double x, int n) {
long N = n;
return N >= 0 ? quickMul(x, N) : 1.0 / quickMul(x, -N);
}
private double quickMul(double x, long N) {
if (N == 0) {
return 1.0;
}
double y = quickMul(x, N / 2);
return N % 2 == 0 ? y * y : y * y * x;
}
}
public class Study0050 {
public static void main(String[] args) {
System.out.println(new Solution().myPow(2.0, -2));
}
}