Haskell入門 階乗の解説
Haskell で階乗のお約束のコードは下記のものらしい
fact 1 = 1 fact n = n * fact (n - 1) main = do print $ fact 5
再帰に不慣れだとちょっと戸惑うので簡単に解説
fact 1 = 1 fact n = n * fact (n - 1)
の部分でパターンマッチを行い、第1引数が 1 の場合はそのまま 1 を返す
第一引数がそれ以外の場合、第一引数が変数 n に束縛されて n * fact (n - 1) が実行される
条件にマッチする間再帰処理が呼び出し続け(往路)、
再帰処理が終わった時点で計算結果を順に返す(復路)
図にして書くと 1 の時点で往路が終了し、復路に入っているのがわかる
まぁ慣れればそれだけの簡単な話でイメージさえ掴めばとくに難しいこともない