cs_lang:ackermann
This is an old revision of the document!
Objective Caml
let rec ackermann x y = match (x,y) with | (0, _) -> y + 1 | (_ , 0) -> ackermann (x - 1) 1 | (_, _) -> ackermann (x - 1) (ackermann x (y - 1));; </ocaml> ====== Python ====== <code python> def ackermann(m, n): if m == 0: return n + 1 elif n == 0: return ackermann(m - 1, 1) else: return ackermann(m - 1, ackermann(m, n - 1))
def ackermann(m, n): while m >= 4: if n == 0: n = 1 else: n = ackermann(m, n - 1) m -= 1 if m == 3: return (1 << n + 3) - 3 elif m == 2: return (n << 1) + 3 elif m == 1: return n + 2 else: return n + 1
cs_lang/ackermann.1335730417.txt.gz · Last modified: 2012/04/29 22:13 by cedric