In C++ si userebbe un'eccezione, che risale lo stack automaticamente finché non trova un handler adeguato; in C c'è la coppia setjmp/longjmp, ma normalmente si tende ad evitare, dato che si ottiene codice poco leggibile (e dal comportamento imprevedibile per chi non ne conosce l'uso).
La soluzione più semplice alla fine resta restituire un valore particolare che faccia sì che le funzioni ricorsive ritornino immediatamente.