如何在没有 pow() 的情况下将 BigInteger 提升为某物的幂
How to raise a BigInteger to the power of something without pow()
我的 Java 教授要我写一个程序,用户给 x 和 y 一个值,然后计算 x^y 的值(x 的 y 次方),并将其打印到控制台。我不允许为此使用 pow() 方法。 x 和 y 是 int 值。
我的代码,在用户给出 x 和 y 值后:
BigInteger solution = BigInteger.valueOf(0);
for (int i=0; i<y; i++) {
solution = solution.add(BigInteger.valueOf((x+solution.intValue())*x));
}
但它永远无法正常工作。它给出的答案通常是 waaaay off。如果有人有解决此问题的代码,将不胜感激!
你只需要将x乘以自身y次。
BigInteger solution;
if (y == 0) {
solution = BigInteger.valueOf(1);
}
else if (y > 0) {
solution = BigInteger.valueOf(x);
for (int i=0; i<y-1; i++) {
solution = solution.multiply(BigInteger.valueOf(x));
}
}
else {
// Negative powers left as exercise to the reader
}
你可以这样做:
public void function(int x, int y){
BigInteger sol = BigInteger.ONE;
for (int i = 0; i < x; i++) {
sol = sol.multiply(BigInteger.valueOf(y));
}
System.out.println(sol);
}
我的 Java 教授要我写一个程序,用户给 x 和 y 一个值,然后计算 x^y 的值(x 的 y 次方),并将其打印到控制台。我不允许为此使用 pow() 方法。 x 和 y 是 int 值。
我的代码,在用户给出 x 和 y 值后:
BigInteger solution = BigInteger.valueOf(0);
for (int i=0; i<y; i++) {
solution = solution.add(BigInteger.valueOf((x+solution.intValue())*x));
}
但它永远无法正常工作。它给出的答案通常是 waaaay off。如果有人有解决此问题的代码,将不胜感激!
你只需要将x乘以自身y次。
BigInteger solution;
if (y == 0) {
solution = BigInteger.valueOf(1);
}
else if (y > 0) {
solution = BigInteger.valueOf(x);
for (int i=0; i<y-1; i++) {
solution = solution.multiply(BigInteger.valueOf(x));
}
}
else {
// Negative powers left as exercise to the reader
}
你可以这样做:
public void function(int x, int y){
BigInteger sol = BigInteger.ONE;
for (int i = 0; i < x; i++) {
sol = sol.multiply(BigInteger.valueOf(y));
}
System.out.println(sol);
}