10/21 関数から「計算」へ(2), アルゴリズムと計算量(1)


前回までの補足


前回の感想,質問より

Q.
練習4.11 dについて。perfect_loop()関数を新たに定義せよ、という指示はありませんが、こちらも再帰を用いて定義し直すべきでしょうか?一応、私は再帰により定義し直しましたが、教科書の範囲外の内容を使わないと解けない気がします。
A
再帰を用いて定義し直すことを想定しています.提出されたプログラムでは あたりで,教科書の範囲外の内容を使っていますが,使わなくても再帰で書けます(定義しなくてはいけない関数は増えますが).
Q.
include(Math)が必要な場面とそうでない場面の区別はあるのでしょうか。
A
sin, cos, log等の算術関数を使う時に必要です.四則演算,比較演算等だけを使うときは必要ありません.Ruby言語のリファレンス・マニュアルの「Mathモジュール」をみると,include(Math)と書いておくと, 「acos acosh asin asinh atan atan2 atanh cbrt cos cosh erf erfc exp frexp gamma hypot ldexp lgamma log log10 log2 rsqrt sin sinh sqrt sqrt tan tanh」などの関数,「E PI」などの定数が使えるようになるようですね.
Q.
elsifは4つ以上の条件分岐でも使えますか?
A
実験してみれば分かりますが,使えます.
Q.
プログラムが終わらずに固まった。そのときにcontrolD離脱しようとしてもうまくいかなかった。
A
[control]+[D]はプロンプト(入力受付中を表す文字列例として「irb(main):003:0>」)が表示されている時しか使えません.強制終了には, [control]+[C] を使ってください.
Q.
sodを使ったprimeの定義で,大きな値を与えるとエラーが出る.
A
再帰関数は再帰のレベルが深くなると,処理系の制限によりエラーが出ることがあります.

前回の課題について


投票システム

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

今日の練習,投票


関連リンク


今回,次回の課題(第1-4章まとめ課題)