计算整数幂的方法对某些指数返回负值

时间:2019-02-16 19:51:53

标签: java recursion return-value

我正在上一个类来计算2的幂(后来我将修改它以使用任何数字)并使用BigInt显示整个值,该计算似乎正常工作,但是该方法为某些函数返回负值指数。

例如2 ^ 31返回-2147483648而不是2147483648  并且2 ^ 100返回-1267650600228229401496703205376而不是1267650600228229401496703205376。

可能是什么原因造成的?

import java.math.BigInteger;

导入静态java.lang.Math.pow;

公共类博览会{

private int count;
private int countRest;
private int restValue = 1;

public BigInteger factorer(int num, int exponent){

    if(exponent < 32){ return BigInteger.valueOf(pot(num, exponent)); }


    count = exponent / 31;
    countRest = exponent % 31;

    BigInteger base = BigInteger.valueOf(pot(num, 31));

    BigInteger result = base.pow(count);

    if(countRest != 0){
        restValue = pot(num, countRest);
    }

    BigInteger rest = BigInteger.valueOf(restValue);

    BigInteger finalResult = result.multiply(rest);

    return finalResult;

}


public int pot(int num, int exponent){

    if(exponent <= 0) return 1;

    return num * pot(num, exponent -1);

}



public double neg(int num, int exponent){

    return pow(num, exponent);

}

}

0 个答案:

没有答案