JAva計算Xのn次方問題解決策
3961 ワード
1.最も簡単で最も効率の低いforサイクルN回xの乗算は再び何も説明しない.再帰でサイクルを半減し、A:Nが偶数の場合、(x^n/2)^2 B:nが奇数の場合、x(x^m)^2 C:nは0に等しく1 D:nは1に等しくxを返す3.シフトを用いてnをバイナリ数に変換し、各バイナリビットをスキャンし、0の場合、直接二乗し、1の場合、そうでなければ二乗してxを乗じる.第2の第3の具体的な実現は以下の通りである.
コードブロック
コードブロック構文は、標準markdownコードに従います.たとえば、次のようにします.
コードブロック
コードブロック構文は、標準markdownコードに従います.たとえば、次のようにします.
public class X_n {
public static void main(String args[]) {
int x = power(3, 4);
System.out.println(x);
int x1 = powerByBinary(3, 5);
System.out.println(x1);
}
/**
* : n , , 0 , , x
*
* @param x
* @param n
* @return
*/
private static int powerByBinary(int x, int n) {
if (n == 0 ) {
return 1;
}
if (n == 1 ) {
return x;
}
int y = 1;
String str = Integer.toBinaryString(n);
for (int a = 0; a < str.length(); a++) {
// char int
int s = Integer.parseInt(String.valueOf(str.charAt(a)));
y = y * y;
System.out.println("=============== ");
System.out.println("y * y = " + y);
if (s == 1) {
y = y * x;
System.out.println("y * x = " + y);
}
}
return y;
}
/**
* : ,x n , n , x n (x^n/2)^2, x(x^m)^2
*
* @param x
* @param n
* @return
*/
private static int power(int x, int n) {
int result = 0;
if (n == 0) {
result = 1;
} else {
result = power(x, n / 2);
result = result * result;
if (n % 2 != 0) {
result = x * result;
}
}
return result;
}
}