『情報科学入門 Rubyを使って学ぶ』の練習問題の解答例の他、授業スライドの練習問題の解答例や、プログラミングのポイント等を掲載します。他クラスの方の利用歓迎。改良・訂正箇所ありましたらご指摘ください。

2011/01/01

[教]練習問題(第五章)

配布プログラムは、
http://lecture.ecc.u-tokyo.ac.jp/johzu/joho-kagaku/text/code/
からダウンロードしてくださいな。


練習5.1 (再起的アルゴリズムの使用)





練習5.2 (正しさの確認)
確認は略。
関数はこちら↓
def  fib_count(k)   ←補助関数
  j=0
  for  i  in 0 .. k
    if  fibr(i) != fibl(i)
      j=j+1
    end
  end
  j
end


def  fib_check(k)   ←すべて同じ値ならtrueと返す
  j==0
end




練習5.3 (近似値との比較)
include(Math)
def  fiba(k)
  phi = (1+sqrt(5))/2
  phi**(k+1)/sqrt(5)
end


誤差は自分で調べてね><




練習5.4 (代入の順序)
試してないけど、多分2^(k-1)が出力されるでしょう。
入れ替えたファイルはこうなります。
def  fibl(k)
  f = 1
  p1 = 1
  for  i  in 2..k
    p1 = f
    p2 = p1  ←すなわち、p1=p2=fになるので
    f = p1+p2 ←fは、前のfの二倍になる
  end
  f
end
つまり、fは繰り返すごとに二倍になります。




練習5.5 (計算時間の実測)
続く

0 件のコメント:

コメントを投稿