LeetCode:Pow(x,n)-指定した数xの整数次べき乗を求める
1561 ワード
1、タイトル名
Pow(x,n)(指定数xの整数次べき乗を求める)
2、タイトルアドレス
https://leetcode.com/problems/powx-n/
3、テーマの内容
英文:Implement pow(x,n)
日文:与えられた底数xと指数n、xのn次べき乗を求める
4、解題方法1
Javaでは、サボる方法があります.
5、解題方法2
本題入力は整数型であるため,nが整数の場合を考慮するだけである.関数Math.powを使用しない場合は、nが0より大きく、nが0より小さいことを分類して議論し、再帰的な方法を使用して重複乗算の演算を減らす必要があります.
END
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