2005-11-22

Factorial!

このblogの読者を3人ほど把握しているのだが、そろそろ読者がいなくなる頃だろう。 昨日、developerWorksメタプログラミング技法 第1回: メタプログラミングとはという記事にSchemeのコードがあったので、久しぶりにSchemeが書きたくなった。学部の頃九州工業大学のゼミに参加していて、そこでSchemeをやった。当時は何にもわかってなかったなぁ。(今もあんまり変わらんけど) 制御構造とラムダを学習した後に最初に書くプログラムは、階乗の計算だろう。記憶を頼りに書いてみる。

(define fact (lambda (x) (cond ((= x 0) 1)
           (else (* (fact (- x 1)) x)))))
(display (fact 10000))
(newline)

処理系はmzschemeを使った。10000の階乗を計算して表示するプログラムだ。 Cで同じプログラムを書いても、ここまで簡単には書けない。階乗を計算するプログラムは簡単に書けるが、そのプログラムで計算できるのは100の階乗くらいまでだ。 10000の階乗を上記のプログラムを使って、研究室にある数値計算用のPC(Pentium4 3.2GHz HT RAM 500MByte)で計算させると1分30秒くらいかかる。結果はちなみに456575桁だ。果たしてこの結果は正しいのだろうか。

私の博士論文包囲網は着々と狭くなってきている。審査員がどうやら決まったようだ。今月末に内部向けの、論文内容の検討が行われる。どーりでSchemeなんか書きたくなった訳だ。






<< Home

このblogは、http://www.argv.org/~chome/blog/noisefactory/に移転しました。

This page is powered by Blogger. Isn't yours?

Subscribe to Posts [Atom]