A:= proc(n, x, y) option remember;
local j, xpyp, xp, yp, res;
xpyp:= [[x-1, y], [x+1, y], [x, y-1], [x, y+1]];
res:= 0;
for j from 1 to 4 do
xp:= xpyp[j, 1];
yp:= xpyp[j, 2];
if xp < 0 or xp > yp or xp + yp > n then next fi;
res:= res + procname(n-1, xp, yp)
od;
return res
end proc:
A(0, 0, 0) := 1:
seq(add(add(A(n, x, y), y = x .. n - x), x = 0 .. floor(n/2)), n = 0 .. 50); #
Robert Israel, Oct 07 2015