雲雀は高く空を舞い このページをアンテナに追加 RSSフィード

「ひよこは高く空を舞い」について

2006-06-06

[]ふぃぼなっち(2) ふぃぼなっち(2) - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - ふぃぼなっち(2) - 雲雀は高く空を舞い ふぃぼなっち(2) - 雲雀は高く空を舞い のブックマークコメント

下にかいたフィボナッチ数列を求める関数fib()再帰関数の例として。n が自然数で無いときのことを考慮してないけど、フィボナッチ数列の定義に沿った、いまの僕には割と自然な書き方かな。

再帰を使わないで繰り返しでやる方法もあるだろうし、他にも書き方はいくらでもあると思うので、これはあとでやる。

あと、再帰と繰り返しとどっちが早いんだろう、とか、もっと早くするには何か最適化できるんだろうか、とか思うけど、うーん。今のところよく分からん。

あ、一般項計算しちゃえよ、ていうのもあるか。

一般項については

http://chick.g.hatena.ne.jp/kiri-no/20060606/1149583529

id:kiri-noがまとめてるので、そちらを参照のこと。

[]クネクネ クネクネ - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - クネクネ - 雲雀は高く空を舞い クネクネ - 雲雀は高く空を舞い のブックマークコメント

今日はオヤスミ。何か疲れた。心情はちらしの裏にでも書いといて、殺伐とただ書き記した方が良いか。

とりあえず保留。

[]ふぃぼなっちふぃぼなっち。 - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - ふぃぼなっち。 - 雲雀は高く空を舞い ふぃぼなっち。 - 雲雀は高く空を舞い のブックマークコメント

def fib(n)
  if n == 1 
    return 1
  elsif n == 2
    return 2
  elsif n > 2
    return fib(n-1)+fib(n-2)
  end
end

skypeしてて話題に上ったので。n番目のフィボナッチ数列を求めるプログラム

elseifじゃなくてelsifなのね。これに気がつかなくて、てどれだけ初歩的な、てか注意力の問題だよね。中身についてはまた後ほど。とりあえず、眠い。

15番目のフィボナッチ数が987

20番目のフィボナッチ数が10946

40番目のフィボナッチ数が……計算が終わりません。

追記2

40番目のフィボナッチ数は165580141でした。

Rubyで実行時間を計るには何を使ったらいいんだろね。

追記2

フィボナッチ数の定義は、F(1) = 1, F(2) = 1, F(n) = F(n-1) + F(n-2) だった。

,

トラックバック - http://chick.g.hatena.ne.jp/allegro/20060606
テクノラティプロフィール