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.