如何在没有 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);

    }