フィボナッチ数の「一般項を求める式を用いた解法」において
当然のことではあるが,フィボナッチ数は整数のはず。示されたプログラムは,numeric(double) を使っているのだから,限界がある。しかるに,限界についてなんの言及もないのは困ったものだ。
フィボナッチ数を求めるなら,gmp ライブラリの fibnum を使うのが穏当。
> options(digits=20) # 実際は,15,6桁しか意味がない
> my.fib.3(71)
[1] 308061521170129.6875
小数点以下四捨五入だと,これ以上のフィボナッチ数は正しくない。
> fibnum(71)
Big Integer ('bigz') :
[1] 308061521170129
> my.fib.3(10)
[1] 55.000000000000014211
15,6桁しか意味がない。後ろの方の数字はゴミ。
通常,options(digits=7) だから,ゴミは丸められて表示される。
> options(digits=7)
> my.fib.3(10)
[1] 55
※コメント投稿者のブログIDはブログ作成者のみに通知されます