masquerade0324のブログ

とある大学院生のメモ書き

Haskellで階乗関数factを書く(はてな記法を使ってみる)

階乗関数の定義(definition)

自然数上の階乗関数は以下のように再帰的に定義されます.有名ですね.

 <br />
n! = \begin{cases}<br />
\ 1                   & \text{if } n = 0 \\<br />
\ n \ \times \ (n-1)! & \text{if } n \ > \ 0<br />
\end{cases}<br />

Haskellによる階乗関数factの実装

IntからIntへの階乗関数factをHaskellで素朴に書くと,次のようになります.

fact :: Int -> Int
fact 0 = 1
fact n = n * fact (n - 1)

ちなみに,型の宣言(fact :: Int -> Int)を省くと,

fact :: (Eq a, Num a) => a -> a

が推論されると思います.