12/7 アルゴリズムと計算量(2)


前回までの補足


前回の感想,質問より

Q.
0から順に数え上げるフィボナッチ数の計算のプログラム
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
は何のためにあるのでしょうか?
A.
  for 「変数」 in 「式1」 .. 「式2」
    「命令1」
    ...
    「命令n」
  end
という構文は,「変数」の値を「式1」から「式2」の値まで1つずつ順に 変化させながら,「命令1」から「命令n」を毎回実行する繰り返しを意味します.
ここまでは「命令1」から「命令n」の中で「変数」の値を参照する例が出てきまし たが,フィボナッチ関数の例では出てきていません.この例での変数iは,繰り返 し回数を覚えておくために使われます.「命令1」から「命令n」までを繰り返し回数k-1回繰り返すだけなので,
  for i in 1..(k-1)
でも良いわけですが,元のプログラムとの関連からを考えて,2からkまで変化させています.


11/16の課題投票


投票システム

vote.rbをダウンロードして,ホームディレクトリに保存してください.ドックからターミナルを起動して,
ruby vote.rb 選択肢番号
のように使います.

今日の練習,投票

関連リンク


教科書の補足


今日の課題