// // acker.spl -- Ackermann's function // proc ackermann(i: int, j: int, ref k: int) { var a: int; if (i = 0) { k := j + 1; } else { if (j = 0) { ackermann(i - 1, 1, k); } else { ackermann(i, j - 1, a); ackermann(i - 1, a, k); } } } proc main() { var i: int; var j: int; var k: int; i := 0; while (i <= 3) { j := 0; while (j <= 6) { ackermann(i, j, k); printi(i); printc(' '); printi(j); printc(' '); printi(k); printc('\n'); j := j + 1; } i := i + 1; } }