Quella che hai nominato si chiama, in gergo, ricorsione di coda. Si ha quando l'ultima chiamata ricorsiva è quella che contiene il risultato finale.
Da un punto di vista puramente "fisico" (guardando, cioè, solo la memoria) questa cosa non accade con la ricorsione: tutte le chiamate generano una copia in memoria della funzione che, quindi, dovrà essere terminata e la terminazione avviene solo quando il calcolo relativo all'espressione ricorsiva termina.
Ciò di cui hai bisogno, però, si trasforma in ITERAZIONE: un ciclo for (o while) è la risposta alla ricorsione di coda.
Ciao.![]()