Ackermann function: Difference between revisions

Added Hare
(Added Hare)
Line 3,797:
5 13 29 61 125 253 509 1021 2045</pre>
Note: In the default groovyConsole configuration for WinXP, "ack(4,1)" caused a stack overflow error!
 
=={{header|Hare}}==
<lang hare>use fmt;
 
fn ackermann(m: u64, n: u64) u64 = {
if (m == 0) {
return n + 1;
};
if (n == 0) {
return ackermann(m - 1, 1);
};
return ackermann(m - 1, ackermann(m, n - 1));
};
 
export fn main() void = {
for (let m = 0u64; m < 4; m += 1) {
for (let n = 0u64; n < 10; n += 1) {
fmt::printfln("A({}, {}) = {}", m, n, ackermann(m, n))!;
};
fmt::println()!;
};
};</lang>
 
=={{header|Haskell}}==
22

edits