tailrekursjon
Tailrekursjon er en form for rekursjon der den rekursive kallet er den siste operasjonen funksjonen utfører. Dette gjør det mulig for visse språkmiljøer å bruke tail-call optimization (TCO), slik at den nåværende stack-rammen kan erstattes av den neste. Resultatet er at minnebruken ikke nødvendigvis vokser med antall rekursjonsnivåer, og rekursive løsninger kan oppføre seg som iterative.
Forskjellen mellom tailrekursjon og generel rekursjon ligger i hvorvidt resultatet av senere operasjoner avhenger av returverdien
Eksempel: beregning av fakultaet. En ikke-tail rekursiv implementasjon er ofte definert som faktorial(n) = n * faktorial(n-1) med
return faktorial_tail(n-1, acc*n)
I språk som støtter TCO, som Scheme eller visse kompilatorbaserte språk, vil faktorial_tail kunne kjøre med
Tailrekursjon er spesielt utbredt i funksjonelle språk, men kan være et nyttig verktøy i imperativprogrammering også,