再帰を使わないでフィボナッチ数
hfib = Hash.new do |h,k|
if k < 2
h[k] = k
else
h[k] = h[k-1]+h[k-2]
end
end
15.times{|n| p [n,hfib[n]]}
は再帰するので
def fib(n)
s = [0, 1]
while s.size <= n
s.push(s[-1]+s[-2])
end
s[n]
end
15.times{|n| p [n,fib(n)]}
こんなかな?
最初のはメモ化されるので何回か使うなら早いんだよね