我一直盯着这段代码看,不知道它有什么问题,也许一双新眼睛能帮上忙。
public static BigInteger powerOfBigInteger (BigInteger base, BigInteger power){
if (power == BigInteger.valueOf(0)){
return BigInteger.valueOf(1);
}
if (power == BigInteger.valueOf(1)){
return base;
}
BigInteger x = BigInteger.valueOf(1);
while (x != power ){
base.multiply(base);
x.add(BigInteger.valueOf(1));
System.out.println(x + " " + power);
return base;
}
return base;
我运行它,显然 x 永远不等于幂。感谢您的帮助。
最佳答案
你应该这样做
if (BigInteger.ZERO.equals(power)) return BigInteger.ONE;
if (BigInteger.ONE.equals(power)) return base;
并且您必须累加乘法和加法的结果,因为 BigInteger 是不可变的并返回新的 BigInteger 实例
无限循环是因为你的 x 永远不会改变 - 应该是
x = x.add(BigInteger.ONE);
乘法应改为
result = result.mulitply(base);
初始结果值应为 BigInteger.ONE
关于java - 计算大整数 Java 的幂期间的无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11025494/