アッカーマン関数
問題1.10はアッカーマン関数。また、いつもどおり、schemeで書かれている関数をHaskellに
ackermann x y | y == 0 = 0 | x == 0 = 2 * y | y == 1 = 2 | otherwise = ackermann ( x -1 ) ( ackermann x ( y - 1))
で、問題は次の引数のときの値は何か?だから
*Main> ackermann 1 10 1024 *Main> ackermann 2 4 65536 *Main> ackermann 3 3 65536
このような結果になります。また、
f n = ackermann 0 n g n = ackermann 1 n h n = ackermann 2 n
の数学的定義を述べよという問題もある。
とりあえず、何パターンかやってみる。
*Main> ackermann 0 2 4 *Main> ackermann 0 3 6 *Main> ackermann 1 2 4 *Main> ackermann 1 3 8 *Main> ackermann 2 2 4 *Main> ackermann 2 3 16 *Main> ackermann 2 4 65536
これをみると、どうやら、fは2*n、gは2^nになるみたいだけど、hがよくわからない。
しょうがないので、こたえをみる。これは、わからなかったや。