1

何らかの理由で、BigIntegerが期待どおりに機能していません。BigVariable.add(BigVariable)を実行していますが、追加されません。結果は常に初期化された値になります。誰かが私が欠けているものを知っていますか?前もって感謝します

コードはプロジェクトオイラー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は不変(不変の任意精度の整数)であるため、これを行う必要があります。したがって、結果を再割り当てする必要があります。

追加

public BigInteger add(BigInteger val)

値が(this + val)であるBigIntegerを返します。パラメータ:val-このBigIntegerに追加される値。戻り値:this + val

于 2013-02-14T03:22:23.950 に答える