Prequel
primitive recursive driven programming


Ackermann

Enter two non-negative integer numbers.
(Note that the Ackermann function grows very rapidly, even for small inputs.)

Run Pause Stop
Runtime Error: DIVISION BY ZERO
0
0
0
← calls
← instructions
← memory (max use: 0)

Prequel program

Edit Save Load Debug
Parser Error: UNEXPECTED CHAR

Module: ackermann

if ackermann is undefined
ackermann = [ackermann.input]
endif
m_n = ackermann.pop()
if m_n[0] == 0
if ackermann.length() == 0
ackermann.return(m_n[1]+1)
endif
prev_m_n = ackermann.pop()
prev_m_n.push(m_n[1]+1)
ackermann.push(prev_m_n)
elif m_n[1] == 0
m_n[0] -= 1
m_n[1] = 1
ackermann.push(m_n)
else
ackermann.push([m_n[0]-1])
m_n[1] -= 1
ackermann.push(m_n)
endif

Input:

ackermann.input
 The list of values written in the editable text input.
 -> e.g. [3, 2]

Functions:

ackermann.return(result)
 End computation and show the calculated value.
 -> result: calculated integer value