Recursive function and if else



Dear all,


Is the syntactic of the following definition of a recursive function
"Character" correct? Here the input of "l" is 1. I would like to test
Character(1, 2, 1, 1).

Can we use "else if" in Maxima? Thank you very much.

Best wishes,
Jianrong.

Character(m, k, n, l):= block([],
if (Character[m][k][n][l] > 0 ) then
(Character[n][k][m][l]:Character[m][k][n][l];
Character[m][l][n][k]:Character[m][k][n][l];
Character[n][l][m][k]:Character[m][k][n][l]; return Character[m][k][n][l] )
else if (m=0, k=0, n=0, l=0) then return 1
else if ((m=1, k=0, n=0, l=0) or ((m=0, k=0, n=1, l=0)) ) then return
Fundamental1
else if ((m=0, k=1, n=0, l=0) or ((m=0, k=0, n=0, l=1)) ) then return
Fundamental2
else if (m>0, k>0, n>0, l>0) then return (Character(m-1, k, n,
l)*Character(m, k, n, l-1)-Character(0, 2*m-1, floor(k/2),
0)*Character(floor(k/2), 2*n, 0, 0))/(Character(m-1, k, n, l-1))
else if (m>0, k>0, n>0, l=0) then return (Character(m-1, k, n,
0)*Character(m, k, n-1, 0)-Character(0, 2*m-1, floor(k/2),
0)*Character(floor(k/2), 2*n-1, 0, 0))/(Character(m-1, k, n-1, 0))
else if (m>0, k>0, n=0, l=0) then return (Character(m-1, k, 0,
0)*Character(m, k-1, 0, 0)-Character(floor(k/2), 2*m-1, 0,
0)*Character(floor((k-1)/2), 0, 0, 0))/(Character(m-1, k-1, 0, 0))
else if (m>0, k=0, n=0, l=0) then return (Character(m-1, 0, 0,
0)*Character(m-1, 0, 0, 0)-Character(0, 2*(m-1), 0, 0))/(Character(m-2, 0,
0, 0))
else if (m=0, k>0, n=0, l=0) then return (Character(0, k-1, 0,
0)*Character(0, k-1, 0, 0)-Character(floor((k-1)/2), 0, 0,
0)*Character(floor(k/2), 0, 0, 0))/(Character(0, k-2, 0, 0))
);

Character(1, 2, 1, 1);