Mysql consente fino a 255 ricorsioni in una PROCEDURA se imposti max_sp_recursion_depth.
È rischioso perché esiste la possibilità che la profondità di ricorsione necessaria possa superare 255 in futuro.
Quindi è meglio sostituire la tua funzione con una procedura, usando un INOUT variabile per return_result.