1

反復法と再帰法を使用しましたが、どちらの場合も fibo(10^6) の結果が速くなりません。O(logN) の複雑さで。

反復法:

static BigInteger fibo(long n){
    BigInteger a=new BigInteger("1");
    BigInteger b=new BigInteger("2");
    BigInteger c=new BigInteger("0");
    for(long i=3;i<=n;i++){
        c=a.add(b);
        a=b;
        b=c;
    }
    return c;
}
4

2 に答える 2

1

nth 値のみを計算する閉じた形式:

閉じた形のフィボナッチ公式

Wolfram MathWorldWikipediaで、このトピック (この式を含む) の詳細を読むことができます。

残念ながら、BigIntegerここでは使用できませんが、 a で使用できるはずですBigDecimal(ただし、テストしていません)。

于 2013-02-05T10:29:15.507 に答える