このコードは、n = 46の後に正解を返しません。これを修正してより高いn項を得るにはどうすればよいですか?フィボナッチ反復:n> 50のフィボナッチ数列の第n項を求めるには0
public static long fibonacciIterative(long n)
{
if(n <= 1) {
return n;
}
int x = 1;
int y = 1;
for(int i=2; i<n; i++)
{
int z = x;
x+= y;
y = z;
}
return x;
}
あなたの肯定的なご意見ありがとうございました。私は質問をした後にコードを実行したらすぐにそれを理解しました。
スタート。 – Eran
ヒント: 'int'が表現できる最大数は何だと思いますか?フィボナッチの数字はどれくらい大きく、46を超えていると思いますか? – lurker
'int'は** - 2^31 **から** 2^31-1 **までの数を保持します。これは' int'がJavaでは32ビットで表されるためです。フィボナッチ数n> 46の項は、これらの制限を超えています。 64ビットで長い数字を保持する 'long'を使うことができます。 'BigInteger'は、' long'の限界を超える必要がある場合、さらに大きくなります。 – Carlton