Esta es una técnica muy común. Se utiliza para almacenar datos jerárquicos (usted los llama recursivos) dentro de una base de datos.
Sin embargo, deberá administrar la integridad en su aplicación, ya que no se puede usar una clave externa, ya que la relación está condicionada al indicador isRecipe.