O Mysql permite até 255 recursões em um PROCEDURE se você definir max_sp_recursion_depth.
É arriscado porque há uma chance de que a profundidade de recursão necessária possa exceder 255 em algum momento no futuro.
Então é melhor você substituir sua função por um procedimento, usando um INOUT variável para o return_result.