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

Published on 12 May 2024 09:40 PM

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

Source code in the clu programming language

% Ackermann function
ack = proc (m, n: int) returns (int)
    if     m=0 then return(n+1)
    elseif n=0 then return(ack(m-1, 1))
    else            return(ack(m-1, ack(m, n-1)))
    end
end ack

% Print a table of ack( 0..3, 0..8 )
start_up = proc ()
    po: stream := stream$primary_output()
    
    for m: int in int$from_to(0, 3) do
        for n: int in int$from_to(0, 8) do
            stream$putright(po, int$unparse(ack(m,n)), 8)
        end
        stream$putl(po, "")
    end
end start_up

  

You may also check:How to resolve the algorithm 15 puzzle game step by step in the PHP programming language
You may also check:How to resolve the algorithm Magic 8-ball step by step in the 8080 Assembly programming language
You may also check:How to resolve the algorithm Find the last Sunday of each month step by step in the Fōrmulæ programming language
You may also check:How to resolve the algorithm Pi step by step in the Factor programming language
You may also check:How to resolve the algorithm Range consolidation step by step in the JavaScript programming language