« Elleはどう読む? | メイン | shellプログラム(階乗関数) »

2010年04月24日

再起してほしい

昨日の離散数学、ちょうど再帰式の出てくるところなので、階乗(!)関数のプログラムを書いてもらった。 1*2*・・・*n をループで処理するプログラムを与えて、これを再帰式 f(1)=1, f(n)=n*f(n-1) に書き換えるもの。 再帰(リカージョン)の第一歩だけど、「わかりません」という学生さんは毎年1割くらいいる。 演習結果を見ると、今年も同程度だった。

ループとリカージョンの相互変換は、1970年代にすでに「理論的には可能」が証明されている。 しかし、現実的にはそれぞれスマートな表現が要求されるため、複雑な問題では頭を痛める場合も多い。 離散数学の学生さんの場合は、「時間内にCプログラムを書く」という環境なので、30分程度で書ける短い問題にしている。

QuickSortを理解するのは大変だと思うけど、離散数学では簡単な問題ばかりなので、早く再起(再帰)してほしい。

投稿者 tadashi : 2010年04月24日 05:55

コメント

コメントしてください




保存しますか?