RosettaCodeData/Task/Ackermann-function/Zig/ackermann-function.zig

18 lines
431 B
Zig

pub fn ack(m: u64, n: u64) u64 {
if (m == 0) return n + 1;
if (n == 0) return ack(m - 1, 1);
return ack(m - 1, ack(m, n - 1));
}
pub fn main() !void {
const stdout = @import("std").io.getStdOut().writer();
var m: u8 = 0;
while (m <= 3) : (m += 1) {
var n: u8 = 0;
while (n <= 8) : (n += 1)
try stdout.print("{d:>8}", .{ack(m, n)});
try stdout.print("\n", .{});
}
}