DECLARE FUNCTION catalan (n as INTEGER) AS SINGLE REDIM SHARED results(0) AS SINGLE FOR x% = 1 TO 15 PRINT x%, catalan (x%) NEXT FUNCTION catalan (n as INTEGER) AS SINGLE IF UBOUND(results) < n THEN REDIM PRESERVE results(n) IF 0 = n THEN results(0) = 1 ELSE results(n) = ((2 * ((2 * n) - 1)) / (n + 1)) * catalan(n - 1) END IF catalan = results(n) END FUNCTION