計算論を読んでたらアッカーマン関数が出てたのでHaskellで書いてみた。
ack 0 n = n + 1
ack m 0 = ack (m-1) 1
ack m n = ack (m-1) $ ack m (n-1)
定義をそのまま書き下せばいい。
*Main> ack 1 2
4
*Main> ack 3 2
29
*Main> ack 3 4
125
それにしても計算論難しい。
計算論を読んでたらアッカーマン関数が出てたのでHaskellで書いてみた。
ack 0 n = n + 1
ack m 0 = ack (m-1) 1
ack m n = ack (m-1) $ ack m (n-1)
定義をそのまま書き下せばいい。
*Main> ack 1 2
4
*Main> ack 3 2
29
*Main> ack 3 4
125
それにしても計算論難しい。