How to resolve the algorithm Ackermann function step by step in the Action! programming language
Published on 12 May 2024 09:40 PM
How to resolve the algorithm Ackermann function step by step in the Action! programming language
Table of Contents
Problem Statement
The Ackermann function is a classic example of a recursive function, notable especially because it is not a primitive recursive function. It grows very quickly in value, as does the size of its call tree.
The Ackermann function is usually defined as follows:
Its arguments are never negative and it always terminates.
Write a function which returns the value of
A ( m , n )
{\displaystyle A(m,n)}
. Arbitrary precision is preferred (since the function grows so quickly), but not required.
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Ackermann function step by step in the Action! programming language
Source code in the action! programming language
DEFINE MAXSIZE="1000"
CARD ARRAY stack(MAXSIZE)
CARD stacksize=[0]
BYTE FUNC IsEmpty()
IF stacksize=0 THEN
RETURN (1)
FI
RETURN (0)
PROC Push(BYTE v)
IF stacksize=maxsize THEN
PrintE("Error: stack is full!")
Break()
FI
stack(stacksize)=v
stacksize==+1
RETURN
BYTE FUNC Pop()
IF IsEmpty() THEN
PrintE("Error: stack is empty!")
Break()
FI
stacksize==-1
RETURN (stack(stacksize))
CARD FUNC Ackermann(CARD m,n)
Push(m)
WHILE IsEmpty()=0
DO
m=Pop()
IF m=0 THEN
n==+1
ELSEIF n=0 THEN
n=1
Push(m-1)
ELSE
n==-1
Push(m-1)
Push(m)
FI
OD
RETURN (n)
PROC Main()
CARD m,n,res
FOR m=0 TO 3
DO
FOR n=0 TO 4
DO
res=Ackermann(m,n)
PrintF("Ack(%U,%U)=%U%E",m,n,res)
OD
OD
RETURN
You may also check:How to resolve the algorithm Unprimeable numbers step by step in the D programming language
You may also check:How to resolve the algorithm Case-sensitivity of identifiers step by step in the C programming language
You may also check:How to resolve the algorithm Hello world/Newline omission step by step in the Arturo programming language
You may also check:How to resolve the algorithm First-class functions step by step in the Déjà Vu programming language
You may also check:How to resolve the algorithm Conditional structures step by step in the Objeck programming language