15 lines
446 B
Plaintext
15 lines
446 B
Plaintext
// To use recursion definition and declaration must be on separate lines
|
|
var Ackermann
|
|
Ackermann = Fn.new {|m, n|
|
|
if (m == 0) return n + 1
|
|
if (n == 0) return Ackermann.call(m - 1, 1)
|
|
return Ackermann.call(m - 1, Ackermann.call(m, n - 1))
|
|
}
|
|
|
|
var pairs = [ [1, 3], [2, 3], [3, 3], [1, 5], [2, 5], [3, 5] ]
|
|
for (pair in pairs) {
|
|
var p1 = pair[0]
|
|
var p2 = pair[1]
|
|
System.print("A[%(p1), %(p2)] = %(Ackermann.call(p1, p2))")
|
|
}
|