31 lines
752 B
Text
31 lines
752 B
Text
Catalan1 := n -> Binomial(2*n, n) - Binomial(2*n, n - 1);
|
|
|
|
Catalan2 := n -> Binomial(2*n, n)/(n + 1);
|
|
|
|
Catalan3 := function(n)
|
|
local k, c;
|
|
c := 1;
|
|
k := 0;
|
|
while k < n do
|
|
k := k + 1;
|
|
c := 2*(2*k - 1)*c/(k + 1);
|
|
od;
|
|
return c;
|
|
end;
|
|
|
|
Catalan4_memo := [1];
|
|
Catalan4 := function(n)
|
|
if not IsBound(Catalan4_memo[n + 1]) then
|
|
Catalan4_memo[n + 1] := Sum([0 .. n - 1], i -> Catalan4(i)*Catalan4(n - 1 - i));
|
|
fi;
|
|
return Catalan4_memo[n + 1];
|
|
end;
|
|
|
|
|
|
# The first fifteen: 0 to 14 !
|
|
List([0 .. 14], Catalan1);
|
|
List([0 .. 14], Catalan2);
|
|
List([0 .. 14], Catalan3);
|
|
List([0 .. 14], Catalan4);
|
|
# Same output for all four:
|
|
# [ 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440 ]
|