1

出于某种原因,BigInteger 没有按我的意愿工作。我正在做 BigVariable.add(BigVariable),但它不会添加。结果始终是它初始化的值。有人知道我错过了什么吗?提前致谢

该代码适用于项目 euler 48

import java.math.BigInteger;


public class tuna {
public static void main(String[] args) {
    BigInteger result = BigInteger.ZERO;
    for(int i= 1; i <= 1000; i++)
        result.add( bigPow(BigInteger.valueOf(i), i) );
    System.out.println(result);
}
public static BigInteger bigPow(BigInteger number, int pow){
    if(pow < 1)
        throw new RuntimeException("bigPow can't handle exponents lower than 1");
    if (pow == 1)
        return number;
    return number.multiply( bigPow(number, pow-1) );
}

}
4

1 回答 1

6

尝试:

result = result.add( bigPow(BigInteger.valueOf(i), i) );

代替:

result.add( bigPow(BigInteger.valueOf(i), i) );

您需要这样做,因为 BigInteger 是不可变的(不可变的任意精度整数)。所以你需要重新分配结果。

添加

公共 BigInteger 添加(BigInteger val)

返回值为 (this + val) 的 BigInteger。参数: val - 要添加到此 BigInteger 的值。返回:this + val

于 2013-02-14T03:22:23.950 回答