La parte difficile da comprendere di questo tipo di ricorsione è che  ci sono molte variabili differenti coinvolte, tutte chiamate "num" . 
 Ogni volta che chiami una funzione, viene creata una nuova copia di  tutte  in quella funzione ("allocata"). (Il nome formale per l'area in cui ciò accade è "stack frame".) 
 La definizione di variabili locali include parametri e il meccanismo funziona anche quando la funzione chiamante e la funzione chiamata hanno la stessa definizione di funzione. Combinati, questi due meccanismi generano una cascata di variabili con valori diversi esistenti contemporaneamente (ma solo una nell'invocazione attiva attualmente). 
 Un buon strumento per capire questo è un debugger con uno stack frame viewer che consente di espandere le variabili locali in tutti i frame attualmente esistenti, non solo quello più in alto. Questo ti permette di verificare che sì, in effetti c'è un   num    con valore 1 e un diverso   num    con valore 2 allo stesso tempo.