Lo que pasa es que tu función es recursiva y al cumplir la condición de cierre el return lo recibe la penúltima llamada a la función y de ahí se pierde, donde pones
pon
Código PHP:
Ver originalreturn GenPath($RuPadre,$PatActual);
La razón por la que si te imprime al descomentar el echo es porque al ser recursiva al menos una vez pasa por el
else y lo imprime, pero luego al retornarla la recibe la penúltima llamada y se pierde porque no hay
return que lo devuelva a la antepenúltima llamada simplemente continúa la ejecución y termina la función sin retornar nada
Espero lo hayas entendido :P
saludos