締切 11月19日(火)
宛先 ruby-2-06@e.koeki-u.ac.jp
以下のうちどれか1題を選んで解答せよ。
1からnまでの整数の和を
の両方で示した上で、再帰的な定義にもとづいて
和を求めるプログラムr-add.rb
を作成せよ。
(標準最高点: C)
1から100までの乱数50個が入っている配列は
x = Array.new(50){rand(100)+1}
とすることで変数xに得られる。このxの中で、
最大の値を再帰的な方法で得るメソッド saidai
を定義し、それを用いて配列中の要素の最大値を求めるプログラム
a_max.rb
を作成せよ。
ヒント: 再帰的手順は以下の要領である。
x.length
)が1なら
最大値は x[0]
である。x[0]
)x[1..-1]
)の最大値のどちらか大きい方が最大値である。
(標準最高点: A)
ハノイの塔を解くプログラムを完成させよ。
(標準最高点: B)
再帰的な考え方を用いて解く問題を設定し それをプログラムにせよ(上限なし)。
※注意※
再帰的な考え方を使わないプログラムは不正解とする。
今回のプログラムは無限ループに陥り、止まらなくなるものを つくってしまう可能性がきわめて高い。プログラムを動かしてもすぐに反 応が返らないときはキーボードで C-c を押してすぐに止める ようにする。プログラムを暴走させたままだと、システムが重くなり他人 に迷惑がかかるので十分に注意すること。
プログラムが完成しなくても、途中まで粘った過程のものを つけて提出せよ。なぜ動かないかの予想を説明に書くこと。 予想が的確であれば完成したのと同等の評価となる。ただし、 文法エラーのないものに限る。
Subjectに
再帰 解いた番号
と書き、本文の先頭に
氏名: | 公益太郎 |
学籍番号: | c117xxx |
クラス: | XX |
のように自分の氏名番号クラスを入れて上記宛先に送ること。 レポート本体は以下のようにすること。
ただし、実行結果については 1種類だけでなく、3種類程度の数で実験したもの を載せること。ただし、出力結果が50行を超えるものは適宜中略すること。