Hva er en halerekursjon?
Rekursjon for haler er en type anrop for programmeringsmetoder der en metode kaller seg selv, og deretter umiddelbart returnerer verdien av det andre anropet. Med andre ord, hale rekursjon oppstår når den endelige uttalelsen i en metode er et annet kall til den samme metoden. Parametrene i den andre metodeanropet er vanligvis forskjellige fra de første, men dette er ikke nødvendig. For at denne rekursjonen skal fungere, må metoden som kalles i seg selv, returnere en konkret verdi, for eksempel et nummer, en streng eller et annet objekt. Stoppmetoder, som ikke gir en verdi, fungerer ikke bra for rekursjon.
Kravet om at en rekursiv samtale må være den siste uttalelsen i sin anropsmetode, betyr ikke nødvendigvis at det rekursive anropet er den siste linjen i metoden. Et riktig hale-rekursjonsanrop kan også bli funnet i en kontrollstruktur, noe som betyr at i kildekode kan kontrollstrukturen avslutte metoden i stedet for samtalen. Det viktige skillet i dette tilfellet er at en kontrollstruktur ikke er en programmeringserklæring, men en innebygd del av dataspråket.
Rekursjon for haler finnes på mange dataspråk, inkludert Java og C ++. Ofte kan disse rekursive samtalene skrives om på andre måter, for eksempel for løkker, mens løkker eller goto uttalelser. Verktøyet med rekursjon blir funnet når du oppretter mange sekvensielle samtaler til samme metode. Rekursjon er ofte den reneste og enkleste måten å utføre repeterende oppgaver.
Et vanlig eksempel på rekursjon av haler er en metode som beregner faktoral for et tall. Denne prosessen er ideell fordi, fra et hvilket som helst tall, hvert nummer før det multipliseres sammen. Så for å finne fabrikken om 5, ville den riktige prosessen å gjøre det være å multiplisere 5 * 4 * 3 * 2 * 1. Rekursjonen kommer inn på grunn av hvordan faktormetoden er strukturert: hvis faktoriet er 1, returner 1, ellers returnerer fabrikknummeret til tallet gitt til metoden minus en. Denne metoden er også nyttig fordi den kan skrives på en ekvivalent måte ved å bruke en hvilken som helst type halerekursjon, med eller uten en kontrollerklæring rundt en endelig metodeanrop.
Rekursjon for haler er bare ett eksempel på flere typer rekursjon. Konseptet i alle typer rekursjon er i det vesentlige det samme, som på noen måte en metode kaller seg selv. Av disse typene er skillet mellom halerekursjon at verdien av et rekursivt anrop umiddelbart blir returnert, og ingenting annet skjer i anropsmetoden etter det anropet.