35 lines
660 B
Plaintext
35 lines
660 B
Plaintext
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.
|