如何将BigInteger提升到没有pow的东西的力量()

时间:2015-04-14 17:41:56

标签: java biginteger

我的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));
    }

但它永远不会正常运作。它给出的答案通常是等待的。如果有人有代码可以解决这个问题,那么非常感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

你只需要将x乘以x倍。

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
}

答案 1 :(得分:0)

您可以这样做:

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);

    }