A que le llamas un comportamiento extraño? si te explicas seria mejor, porque obviando que no se reduce a la minima expresion todo va bien con el programa
El codigo es bien sencillo, recursividad es cuando desde dentro de una funcion, esta se llama a si misma. Por las reglas si no publicas un codigo minimo desde donde guiarte no se puede hacer nada.