Skip to main content

Wat is een staartrecursie?

staartrecursie is een type programmeermethodeaanroep waarbij een methode zichzelf oproept en vervolgens onmiddellijk de waarde van die tweede oproep retourneert.Met andere woorden, staartrecursie treedt op wanneer de uiteindelijke verklaring binnen een methode een andere oproep is naar diezelfde methode.De parameters in de tweede methode -oproep 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 nummer, string of een ander object.Nietige methoden, die geen waarde retourneren, werken niet goed voor recursie.

De eis dat een recursieve oproep de laatste verklaring in de oproepingsmethode moet zijn, betekent niet noodzakelijk dat de recursieve oproep de laatste regel in de methode is.Een juiste staartrecursie -oproep kan ook worden gevonden in een besturingsstructuur, wat betekent dat in de broncode de besturingsstructuur de methode kan beëindigen in plaats van de oproep.Het belangrijke onderscheid in dit geval is dat een besturingsstructuur geen programmeerverklaring is, maar een ingebouwd deel van de computertaal.

staartrecursie bestaat in veel computertalen, waaronder Java en C ++.Vaak kunnen deze recursieve oproepen worden herschreven met behulp van andere middelen, zoals voor lussen, terwijl lussen of goto -verklaringen.Het nut van recursie wordt gevonden bij het maken van vele sequentiële oproepen naar dezelfde methode.Recursie is vaak de schoonste en gemakkelijkste manier om repetitieve taken uit te voeren.

Een gemeenschappelijk voorbeeld van staartrecursie is een methode die de factor van een getal berekent.Dit proces is ideaal omdat, beginnend bij elk getal, elk nummer voordat het wordt vermenigvuldigd.Dus, om de faculteit van 5 te vinden, zou het juiste proces om dat te doen zijn om 5*4*3*2*1 te vermenigvuldigen.De recursie komt binnen vanwege hoe de faculteit methode is gestructureerd: als de faculteit 1 is, retourneer ik anders, anders de faculteit van het nummer aan de methode minus één terug.Deze methode is ook nuttig omdat deze gelijkwaardig kan worden geschreven met behulp van een type staartrecursie, met of zonder een besturingsinstructie rond een laatste methodeaanroep.

Tail Recursie is slechts een voorbeeld van de meerdere soorten recursie.Het concept in alle soorten recursie is in wezen hetzelfde, dat op een of andere manier een methode zichzelf roept.Van deze typen is het onderscheid van staartrecursie dat de waarde van een recursieve oproep onmiddellijk wordt geretourneerd en dat er na die oproep niets anders gebeurt in de aanroepmethode.