この間ちょっと悔しい思いをしたのでフィボナッチ数列について調べたりRubyで書いたりしてみた。むしろ次の日からやりたかったんだけど、仕事忙しすぎてやっと出来たって感じ。
def fib(n) return n if n == 0 || n == 1 fib(n -1) + fib(n -2) end (0..100).each {|n| puts fib n}
こんなんで良いのかな?
こういう計算機科学的なことって今までやってこなかったんですけど、意外と面白い!!!何が面白いって、途中から一個の計算が滅茶苦茶遅くなるんですよ。フルHDの動画の再生だって楽々こなしちゃうMBPさんが、僕が書いたたった4行の関数を処理するのに凄い苦労している。。。
これがなんかこう、、、「機械に勝ったぞ!!!」って感じになる。
こんな脳内イメージ↓
俺「えー、MBPさんいっつもクールなのに大丈夫ですかー?めっちゃ脂汗でてるっすよー?」
MBP「ちくしょう、、、ちくしょう!!!」
んで、フィボナッチって何の役に経つの?これが全然解らなくて。本とかNetで見ていても「これ、何の役に経つんだろう」って考えながらなので、とても集中出来ない。だから色々調べてみたところ「普通はあまり役に経たない」みたいですね。
得られた情報では、黄金律に関する計算と、見積もりポーカーっていうゲームで使用されているらしいです。後は、自然界にフィボナッチ数列が多数存在しているらしい(ひまわりの種がどーのこーのとか)。
数学の本とか引っ張り出して読んだり、ネットでフィボナッチ数列そのものについて調べたが恐らく、何かの役に経たせるために作られたとかじゃなくて、自然界にあるこういう法則をフィボナッチさんが見つけたよ!って事なんだろう。それならそれで納得。
つまりは、計算機科学やなんかでこれがよく出てくるのは、再帰を考える上でとても良い教材だってのと、なんかこれを弄ってたら面白い!ってことなのかな?
”Ruby フィボナッチ”でググると、フィボナッチの計算の最適化がどーのこーのって話が凄いあったから、ベンチマーク的な使い方が一番一般的なのかな???