Sudan function: Difference between revisions

Content added Content deleted
(Add CLU)
(Add MAD)
Line 923: Line 923:
sudan(2, 2, 1) = 27
sudan(2, 2, 1) = 27
</pre>
</pre>

=={{header|MAD}}==
<syntaxhighlight lang="mad"> NORMAL MODE IS INTEGER
R WE HAVE TO DEFINE OUR OWN STACK FIRST
DIMENSION STACK(1000)
SET LIST TO STACK

R SUDAN FUNCTION
INTERNAL FUNCTION(N,X,Y)
ENTRY TO SUDAN.

R BASE CASES
WHENEVER N.E.0, FUNCTION RETURN X+Y
WHENEVER Y.E.0, FUNCTION RETURN X

R RECURSIVE CASE - WITH MANUAL STACK MANIPULATION
R NOTE WE DON'T NEED X AFTER THE FIRST CALL
SAVE RETURN
SAVE DATA N,Y
K = SUDAN.(N,X,Y-1)
RESTORE DATA N,Y
RESTORE RETURN

SAVE RETURN
K = SUDAN.(N-1, K, K+Y)
RESTORE RETURN
FUNCTION RETURN K
END OF FUNCTION
INTERNAL FUNCTION(N,X,Y)
ENTRY TO SHOW.
VECTOR VALUES FMT = $7HSUDAN.(,I1,1H,,I1,1H,,I1,4H) = ,I8*$
PRINT FORMAT FMT,N,X,Y,SUDAN.(N,X,Y)
END OF FUNCTION

SHOW.(1,3,3)
SHOW.(2,1,1)
SHOW.(2,2,1)
SHOW.(3,1,1)
END OF PROGRAM</syntaxhighlight>
{{out}}
<pre>SUDAN.(1,3,3) = 35
SUDAN.(2,1,1) = 8
SUDAN.(2,2,1) = 27
SUDAN.(3,1,1) = 10228</pre>


=={{header|OCaml}}==
=={{header|OCaml}}==