Tak関数
マッカーシー版は、メモ化では同様に速い。しかし、マッカーシー版をHaskellなどでそのままの定義で遅延評価した場合は、高速にならない(遅延評価では計算量が減らない)、という違いがある。
定義
code:hs
tarai :: Int -> Int -> Int -> Int
tarai x y z
| x <= y = z -- たらい回し関数はここがy
| otherwise = tarai
(tarai (x-1) y z)
(tarai (y-1) z x)
(tarai (z-1) x y)