summary refs log tree commit diff stats
path: root/tests/accept/run/tack.nim
blob: 680ff567e752bdf0d821c7291580dab1992be1e3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
discard """
  file: "tack.nim"
  output: "125"
"""
# the Ackermann function

proc ack(x, y: int): int =
  if x != 0:
    if y != 0:
      return ack(x-1, ack(x, y-1))
    return ack(x-1, 1)
  else:
    return y + 1
#  if x == 0: return y + 1
#  elif y == 0: return ack(x-1, 1)
#  else: return ack(x-1, ack(x, y-1))

# echo(ack(0, 0))
write(stdout, ack(3, 4)) #OUT 125