2011年10月28日金曜日

階乗のプログラム

Lipsで書くと、こんな感じ。
(defun fact (n)
    (if (zerop n)
        1
       (* n (fact (- n 1)))))
カッコの数があっているのか心配になる。

Prologで書くとこんな感じ。
fact(0, 1).
fact(N, X) :- N1 is N - 1,  fact(N1, X1), X is X1 * N.
分かりやすい。ステキ☆

Haskellで書いてみる。
fact :: Integer -> Integer
fact 0 = 1
fact n = n * fact(n - 1)
やっぱりこのあたりはHaskellが一番きれいかも。分かりやすいし。

Javaで書いてみる。
class Fuctorial {
  static int fact(int x) {
      if ( x == 0 )
          return 1;

     return x * fact(x-1);
  }
}
この程度のことでも色々書かなくちゃ行けない辺りが面倒。

0 件のコメント:

コメントを投稿