The case of bipartite maps (Thm 4.4)  

> # This is the explicit (non-polynomial) recurrence to compute the numbers of bipartite maps by edges and genus
#and with a weight u/v/z per white vx/black vx/face
# This is Thm 4.4 in the paper.
Bng:= proc(N,G)
option remember;
# Initial conditions
if N<0 or G<0 or 2*G>N then return 0:
elif G=0   and N=0 then return 0;
elif G=0   and N=1 then return u*v*z;
elif G=0   and N=2 then return u*v*z*(u+v+z);
elif G=1/2 and N=1 then return 0;
elif G=1/2 and N=2 then return u*v*z;
elif G=1   and N=2 then return 0;
# main case
else
1/(N-2)/(N+1) * (
 
(N-2)*(2*N-1)*( (u+v+z)*Bng(N-1,G)   - Bng(N-1,G-1/2) ) -(N-2)*psi(N)*Bng(N-2,G)
 +(N-2)*(2*N-1)*(2*N-3)*N*
Bng(N-2,G-1) -(N-2)*6*(N-1)*(u+v-z)*Bng(N-2,G-1/2)
 +(N-2)*2*
add(add( (6*n1*(N-n1)-2*N+1)*Bng(N-n1-1,G-G1/2)*Bng(n1-1,G1/2),G1=0..2*G),n1=0..N)
 -
add(add(add(add(add(add(
          2^(2+G1-G0)*(1+(-1)^(G0-G1))/2*binomial(p,i)*binomial(q,n1-G1-(n1+2-G0-p-q)-i)             
          *coeff(coeff(coeff(
Bngexclude(n1,G0/2,N,G),z,n1+2-G0-p-q),v,q),u,p)*z^(n1+2-G0-p-q)*u^(i)*v^(n1-G1-(n1+2-G0-p-q)-i)
          *(-(N-n1+1)*
Bng((N-n1),G-G1/2)  +(2*(N-n1)-1)*( (u+v+z)*Bng((N-n1)-1,(G-G1/2)) - Bng((N-n1)-1,G-G1/2-1/2) )
            -psi(N-n1)*
Bng((N-n1)-2,(G-G1/2)) +(2*(N-n1)-1)*(2*(N-n1)-3)*(N-n1)*Bng((N-n1)-2,(G-G1/2)-1)
            -6*((N-n1)-1)*(u+v-z)*B
ng((N-n1)-2,(G-G1/2)-1/2)
            +deltabs(N-n1,G-G1/2)
            +2*
add(add((6*n3*((N-n1)-n3)-2*(N-n1)+1)*Bng(n3-1,G3/2)*Bng(((N-n1)-n3)-1,G-G1/2-G3/2)
               
,n3=0..N-n1),  G3=0..2*(G-G1/2)) )
  ,
i=0..n1-G1-(n1+2-G0-p-q)),q=1..n1+2-G0-1-p),p=1..n1+2-G0-2),G0=0..G1),G1=0..2*G),n1=1..N-1)) :
 
return factor(%);
fi:
end:

# Contribution of Kronecker deltas in the theorem
deltabs:=proc(n2,G2)
 if n2=1 and G2=0 then
   return 2*u*v*z;
elif n2=2 then
  if   G2=0   then return 6*u*v*u*v;
  elif G2=1/2 then return -6*u*v*(u+v-z);
  elif G2=1   then return 6*u*v;
  fi;
fi:
return 0;
end:

# The term of index (N,G) appears in the RHS of the recurrence but is multiplied by 0.
# In order to prevent Maple from trying to evaluate it (before multiplication) we use Bngexclude instead:
Bngexclude:=proc(N,G,Nexclude, Gexclude)
if N=Nexclude and G=Gexclude then return 0;
else return Bng(N,G); fi;
end:

#Auxiliary function
psi:=proc(N)
return (N-2)*(u^2+v^2+z^2-14*u*v-2*u*z-2*v*z)-12*u*v;
end:


 

> # Example with 10 edges and genus 7/2
Bng(10,7/2);
 

`+`(`*`(20, `*`(u, `*`(v, `*`(z, `*`(`+`(`*`(2172447, `*`(`^`(u, 2))), `*`(5261620, `*`(u, `*`(v))), `*`(5261620, `*`(u, `*`(z))), `*`(2172447, `*`(`^`(v, 2))), `*`(5261620, `*`(v, `*`(z))), `*`(21724... (2.3.1)