The case of  maps via our main approach (Thm 3.6) 

> # This is the explicit (non-polynomial) recurrence to compute the numbers of maps by edges and genus
# and with a weight u/z per vertices/faces, obtained from the non-bipartite tau-function.
# This is Thm 3.6 in the paper. It computes the same value as the program HngW above
HHng:= proc(N,G)
local  G0,G1, G2, G3;
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*u^2;
elif G=0   and N=1 then return u*z*(u+z);
elif G=0   and N=2 then return u*z*(u+2*z)*(2*u+z);
elif G=1/2 and N=1 then return u*z;
elif G=1/2 and N=2 then return 5*u*z*(z+u);
elif G=1   and N=2 then return 5*u*z;
# main case
else
 
1/(N+1)/(N) * (
 
2*N*(2*N-1)*( (z+4*u)*HHng(N-1,G) -2*HHng(N-1,G-1/2) )
 +4*N*(2*N-3)*( 3*z*u*
HHng(N-2,G)  +(2*N-1)*(N-1)*HHng(N-2,G-1))
 +6*N*
add(add(  (2*n1-1)*(2*(N-n1)-1)*HHng(N-n1-1,G-G1/2)*HHng(n1-1,G1/2),G1=0..2*G),n1=0..N)
 -
add(add(add(add(
      binomial(p,2+G1-G0)*(2)^(2+G1-G0)*(1+(-1)^(G0-G1))/2
      *coeff(coeff(
HHngexclude(n1,G0/2,N,G),z,n1+2-G0-p),u,p)*z^(n1+2-G0-p)*u^(n1-G1+p-n1-2+G0)
      *(-(N-n1+1)/2*
HHng((N-n1),G-G1/2)
        +(2*(N-n1)-1)*( (z+4*u)*
HHng((N-n1)-1,(G-G1/2)) - 2* HHng((N-n1)-1,G-G1/2-1/2) )
        +(2*(N-n1)-1)*(2*(N-n1)-2)*(2*(N-n1)-3)*
HHng((N-n1)-2,G-G1/2-1)
        +3*z*u*2*(2*(N-n1)-3)*
HHng((N-n1)-2,(G-G1/2))
        +deltas(n1,G1/2,N,G,G0/2)
        +3*
add(add( (2*n3-1)*(2*((N-n1)-n3)-1)*HHng(n3-1,G3/2)*HHng(((N-n1)-n3)-1,G-G1/2-G3/2),n3=0..N-n1),  G3=0..2*(G-G1/2)) )
  ,
p=1..n1+2-G0-1),G0=0..G1),G1=0..2*G),n1=1..N)) :
# inverting the differntial operator in the LHS:
return factor(add(coeff(%,u,k)*u^k /(1+k*(k-1)*3/N/(N+1)),k=0..degree(%,u)));
fi:
end:

# Contribution of Kronecker deltas in the theorem
deltas:=proc(n1,G1,N,G,G0)
 if n1=N and G0<>G then
  if G1=G then return 3*(u)^2/2; fi;
  if G1=G-1/2 then return -3*(u)/2; fi;
elif n1=N-1 then
  if G1=G then return u*z*(4*u+z);
  elif G1=G-1/2 then return -2*u*z;
  fi;
elif n1=N-2 then
  if G1=G then return 3*u*z*u*z;
  elif G1=G-1 then return 3*u*z*2:
  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 HHngexclude instead:
HHngexclude:=proc(N,G,Nexclude, Gexclude)
if N=Nexclude and G=Gexclude then return 0;
else return HHng(N,G); fi;
end:
 

>
 

> # Note: it gives the same result as the previous one!
HHng(8,5/2);
HngW(8,5/2);
 

 

`+`(`*`(34, `*`(u, `*`(z, `*`(`+`(u, z), `*`(`+`(`*`(1690073, `*`(`^`(u, 2))), `*`(4890373, `*`(u, `*`(z))), `*`(1690073, `*`(`^`(z, 2))))))))))
`+`(`*`(34, `*`(u, `*`(z, `*`(`+`(u, z), `*`(`+`(`*`(1690073, `*`(`^`(u, 2))), `*`(4890373, `*`(u, `*`(z))), `*`(1690073, `*`(`^`(z, 2)))))))))) (2.2.1)