Wat is een staartrecursie?

Tail recursion is een soort programmeermethode-aanroep waarbij een methode zichzelf aanroept en vervolgens onmiddellijk de waarde van die tweede aanroep retourneert. Met andere woorden, staartrecursie vindt plaats wanneer de laatste instructie in een methode een andere aanroep is voor diezelfde methode. De parameters in de tweede methode-aanroep verschillen in het algemeen van die van de eerste, maar dit is niet vereist. Om deze recursie te laten werken, moet de methode die in zichzelf wordt aangeroepen, een concrete waarde retourneren, zoals een getal, tekenreeks of een ander object. Ongeldige methoden, die geen waarde retourneren, werken niet goed voor recursie.

De eis dat een recursieve aanroep de laatste verklaring in de aanroepmethode moet zijn, betekent niet noodzakelijk dat de recursieve aanroep de laatste regel in de methode is. Een juiste tail recursion call kan ook worden gevonden binnen een besturingsstructuur, wat betekent dat in broncode de besturingsstructuur de methode kan beëindigen in plaats van de oproep. Het belangrijke onderscheid in dit geval is dat een besturingsstructuur geen programmeeropdracht is, maar een ingebouwd onderdeel van de computertaal.

Tail recursion bestaat in vele computertalen, waaronder Java en C ++. Vaak kunnen deze recursieve oproepen worden herschreven met behulp van andere middelen, zoals voor loops, while-loops of ga naar instructies. Het nut van recursie wordt gevonden bij het maken van veel opeenvolgende aanroepen van dezelfde methode. Recursie is vaak de schoonste en gemakkelijkste manier om repetitieve taken uit te voeren.

Een veelgebruikt voorbeeld van staartrecursie is een methode die de faculteit van een getal berekent. Dit proces is ideaal omdat, beginnend met een willekeurig getal, elk getal voordat het wordt vermenigvuldigd. Dus, om de faculteit van 5 te vinden, zou het juiste proces om dat te doen zijn 5 * 4 * 3 * 2 * 1 te vermenigvuldigen. De recursie komt binnen vanwege de manier waarop de faculteit is gestructureerd: als de faculteit 1 is, geeft u 1 terug, anders geeft u de faculteit terug van het getal dat aan de methode is gegeven min één. Deze methode is ook nuttig omdat deze op gelijkwaardige wijze kan worden geschreven met behulp van beide typen staartrecursie, met of zonder een besturingsopdracht rond een laatste methodeaanroep.

Staartrecursie is slechts een voorbeeld van de verschillende soorten recursie. Het concept bij alle soorten recursies is in wezen hetzelfde, dat een methode zichzelf op een bepaalde manier noemt. Van deze typen is het onderscheid van staartrecursie dat de waarde van een recursieve aanroep onmiddellijk wordt geretourneerd, en er gebeurt niets anders in de aanroepmethode na die aanroep.

ANDERE TALEN

heeft dit artikel jou geholpen? bedankt voor de feedback bedankt voor de feedback

Hoe kunnen we helpen? Hoe kunnen we helpen?