require 'benchmark'
Benchmark.measure{ 「式」 }.total
で「式」の実行時間を計測して,gnuplotでグラフにしたものです.
def fibl(k)
f=1
p1=1
for i in 2..k
p2 = p1 #fib(i-2)
p1 = f #fib(i-1)
f = p1 + p2 #fib(i)
end
f #fib(k)
end
で,forの繰り返し部分
p2 = p1 #fib(i-2)
p1 = f #fib(i-1)
f = p1 + p2 #fib(i)
の中に変数iが現れません.
for i in 2..kは何のためにあるのでしょうか?
for 「変数」 in 「式1」 .. 「式2」
「命令1」
...
「命令n」
end
という構文は,「変数」の値を「式1」から「式2」の値まで1つずつ順に
変化させながら,「命令1」から「命令n」を毎回実行する繰り返しを意味します.for i in 1..(k-1)でも良いわけですが,元のプログラムとの関連からを考えて,2からkまで変化させています.
ruby vote.rb 選択肢番号のように使います.
ruby check.rb ex01.rbと実行すると,関数を与えた時の入力と出力があっていることが確認できます.