De datastructuur die impliciet wordt gebruikt om recursie te ondersteunen is de call stack .
Hoewel u bij het schrijven van een recursieve functie niet expliciet een stapelgegevensstructuur *gebruikt* in uw code, is het onderliggende mechanisme er sterk afhankelijk van. Elke recursieve oproep voegt een nieuw frame (met lokale variabelen, functieparameters en retouradres) toe aan de oproepstapel. Wanneer een recursieve oproep is voltooid, wordt het frame van de stapel verwijderd en wordt de uitvoering hervat op het punt waar de oproep werd gedaan. Als de recursie niet op de juiste manier wordt beëindigd, kan dit leiden tot een stack-overflow-fout omdat de stapel een beperkte omvang heeft. |