Mysql permite hasta 255 recursiones en un PROCEDIMIENTO si establece max_sp_recursion_depth.
Es arriesgado porque existe la posibilidad de que la profundidad de recursión necesaria supere los 255 en el futuro.
Así que es mejor que reemplaces tu función con un procedimiento, usando un INOUT variable para return_result.