From 2a4c3689618bef15dc1dc6828fb4d8b8058708fa Mon Sep 17 00:00:00 2001 From: lemon Date: Sun, 7 Aug 2022 18:59:06 +0200 Subject: ackermann example --- bootstrap/ack.cff | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 bootstrap/ack.cff (limited to 'bootstrap/ack.cff') diff --git a/bootstrap/ack.cff b/bootstrap/ack.cff new file mode 100644 index 0000000..233abc2 --- /dev/null +++ b/bootstrap/ack.cff @@ -0,0 +1,15 @@ +import "libc.hff"; + +fn ack(m uint, n uint) uint { + if m == 0 { return n + 1; } + if n == 0 { return ack(m - 1, 1); } + return ack(m - 1, ack(m, n - 1)); +} + +extern fn main() void { + for let m = 0; m <= 4; ++m { + for let n = 0; n < 6 - m; ++n { + printf("A(%u,%u) = %u\n", m, n, ack(m, n)); + } + } +} -- cgit v1.2.3