第34回 Ruby/Rails 勉強会 - 演習 2
演習問題 のつづき
フィボナッチ数を計算するプログラムをループ版と再帰版の両方を書いてください。
再帰版
def fibonacci(n) case n when 0 0 when 1..2 1 else fibonacci(n-2)+fibonacci(n-1) end end (0..8).each do |i| fibonacci i # => 0, 1, 1, 2, 3, 5, 8, 13, 21 end
ループ版
def fibonacci(n) f0, f1 = 0, 1 for i in 1..n f0, f1 = f1, f0 + f1 end f0 end (0..8).each do |i| fibonacci i # => 0, 1, 1, 2, 3, 5, 8, 13, 21 end
また無理矢理 for を使ってみた。
また、以下の数列の漸化式を求めフィボナッチ数と同じように各項の値を計算するプログラムをループ版と再帰版の両方とも書いてください。
例) 1 1 1 3 5 9 17 31 57 ...
漸化式は、こう?
再帰版
def gunction(n) case n when 0 0 when 1..3 1 else gunction(n-3) + gunction(n-2) + gunction(n-1) end end (0..9).each do |i| gunction i # => 0, 1, 1, 1, 3, 5, 9, 17, 31, 57 end
ループ版
def gunction(n) g0, g1, g2, g3 = 0, 1, 1, 1 for i in 1..n g0, g1, g2, g3 = g1, g2, g3, g1+g2+g3 end g0 end (0..9).each do |i| gunction i # => 0, 1, 1, 1, 3, 5, 9, 17, 31, 57 end
また無理矢理 (ry