たらい回し関数(竹内関数)
ふつケルで載ってました。
スゲーぞ、Haskell。引数渡しで評価してないからできるのか〜。
http://www.loveruby.net/d/20030315.html#p03
http://blog.livedoor.jp/dankogai/archives/50447103.html
ちなみにVDM++で書いてみた。
-- たらいまわし関数 class tarai functions public static main: () -> int main() == tarai(20, 10, 5); public static tarai: int * int * int -> int tarai(x, y, z) == if x <= y then y else tarai( tarai( (x-1), y, z), tarai( (y-1), z, x), tarai( (z-1), x, y)); end tarai
試してみると、2時間動かしても返ってこなかった。orz