void function(int x){
if(x<=0)
return;
function(x--);
}
Questa è una funzione di ricorsione chiamata con il valore di x = 20.
La chiamata ricorsiva avverrà in questo modo
function(20)...function(19).......function(0)
Ogni chiamata di funzione userà un po 'di memoria e se i dati sono grandi genererà StackOverflowException.
Quindi quello che voglio sapere è:
C'è un modo in cui possiamo chiamare una funzione e rimuoverla dallo stack di chiamata in modo che la sua memoria possa essere utilizzata (ad esempio dopo la funzione (20) chiama function (19) la memoria per la funzione (20) dovrebbe essere deselezionata ), e la fine della chiamata ricorsiva (qui function (0)) dovrebbe essere restituita dal primo posto da dove è stata chiamata (es. function (20)).
Questo può essere fatto in Java e C?