Sudan function: Difference between revisions
Content added Content deleted
Not a robot (talk | contribs) (Add CLU) |
Not a robot (talk | contribs) (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}}== |