Sudan function: Difference between revisions

Add Modula-2
(Add MAD)
(Add Modula-2)
Line 969:
SUDAN.(2,2,1) = 27
SUDAN.(3,1,1) = 10228</pre>
 
=={{header|Modula-2}}==
<syntaxhighlight lang="modula2">MODULE Sudan;
FROM InOut IMPORT WriteCard, WriteString, WriteLn;
 
PROCEDURE sudan(n, x, y: CARDINAL): CARDINAL;
VAR k: CARDINAL;
BEGIN
IF n = 0 THEN RETURN x+y
ELSIF y = 0 THEN RETURN x
ELSE
k := sudan(n, x, y-1);
RETURN sudan(n-1, k, k+y)
END
END sudan;
 
PROCEDURE Show(n, x, y: CARDINAL);
BEGIN
WriteString("sudan(");
WriteCard(n, 0);
WriteString(", ");
WriteCard(x, 0);
WriteString(", ");
WriteCard(y, 0);
WriteString(") = ");
WriteCard(sudan(n,x,y), 0);
WriteLn
END Show;
 
BEGIN
Show(0, 0, 0);
Show(1, 1, 1);
Show(2, 1, 1);
Show(3, 1, 1);
Show(2, 2, 1)
END Sudan.</syntaxhighlight>
{{out}}
<pre>sudan(0, 0, 0) = 0
sudan(1, 1, 1) = 3
sudan(2, 1, 1) = 8
sudan(3, 1, 1) = 10228
sudan(2, 2, 1) = 27</pre>
 
=={{header|OCaml}}==
2,095

edits