qsecofr:
comunque mi permane il dubbio di come faccia a farsi 'ste funzioni ricorsive senza toccare lo stack... deve essere un barbatrucco non da poco.
La cosa è molto più semplice di quelli che pensi, in realtà il compilatore si rende conto che c'è una ricorsività e la gestisce in modo opportuno senza incrementare lo stack ad ogni iterazione.
Se provi a fare un ricerca con argomento "tail call" e "tail recursive" trovi tutte le spiegazioni del caso.