How to resolve the algorithm Ackermann function step by step in the EMal programming language

Published on 12 May 2024 09:40 PM

How to resolve the algorithm Ackermann function step by step in the EMal 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 EMal programming language

Source code in the emal programming language

fun ackermann = int by int m, int n
  return when(m == 0, 
    n + 1, 
	when(n == 0, 
	ackermann(m - 1, 1), 
	ackermann(m - 1, ackermann(m, n - 1))))
end
for int m = 0; m <= 3; ++m
  for int n = 0; n <= 6; ++n
    writeLine("Ackermann(" + m + ", " + n + ") = " + ackermann(m, n))
  end
end

  

You may also check:How to resolve the algorithm Loops/Foreach step by step in the Io programming language
You may also check:How to resolve the algorithm Hello world/Newline omission step by step in the M2000 Interpreter programming language
You may also check:How to resolve the algorithm Metaprogramming step by step in the Prolog programming language
You may also check:How to resolve the algorithm History variables step by step in the Julia programming language
You may also check:How to resolve the algorithm Prime decomposition step by step in the Prolog programming language