Skip to main content

Hva er en rekursiv samtale?

I programmering er en rekursiv samtale en kommando i en subroutine eller funksjon som ber programmet om å kjøre den samme subroutine igjen.Gjenta ytelsen kan være det direkte resultatet av funksjonen, eller en annen funksjon kan utløses som på sin side refererer tilbake til den første funksjonen.En rekursiv samtale har noen likheter med den fryktede uendelige sløyfen, men subroutinen har alltid en betinget uttalelse som forteller programmet når man skal slutte å gjenta rekursjonen.

Recursion konseptet er kanskje best illustrert gjennom bruk av et eksempel.Anta at en takhøyde bruker nye helvetesild på et hjem.For å begynne med må han bære et knippe helvetesild til taket.Når han har spikret den første bunten på plass, må han klatre nedover stigen, hente en annen bunt og spikre den på plass.Prosessen fortsetter som en serie med go, henter, returnerer til den siste helvetesilden har blitt brukt.På det tidspunktet står takfekeren fritt til å gå videre til neste jobb eller gå hjem.

Selv om eksemplet er en forenkling, inneholder det alle elementene i en rekursiv samtale.Det er et utgangspunkt, takeren må hente det han trenger, gå tilbake til begynnelsen, og når den endelige tilstanden er oppfylt, stopper.Dette er i utgangspunktet hva programmet gjør;Det starter, implementerer en handling, går tilbake til seg selv og avsluttes når slutttilstanden oppstår.

Endingstilstanden blir referert til som basisaken.Det er viktig for alle rekursive samtaler;Uten den ville funksjonen fortsette å gjenta.I beste fall resulterer dette i å tømme systemets minneressurser.Normalt vil overbelastningen krasje programmet på et tidspunkt, men når problemet blir oppdaget, kan det gjøres betydelige skader.

Erfarne programmerere kan gjenkjenne likheten mellom en rekursiv samtale og en for eller mens Loop.Hvis for eksempel målet er å finne det totale lagertallet for alle aksjer med deletall større enn 999, forteller A for Loop til programmet å finne alle kvalifiserende forekomster og en stund -loop forteller programmet om å utføre sløyfen bare mens det angitteTilstanden er gyldig.En rekursiv samtale kan sies å kombinere noen av funksjonene i disse løkkene med en if-da-elves uttalelse;Hvis denne tilstanden er sann, så gjør dette, ellers gjør noe annerledes hvis tilstanden er falsk.Rekursjon gir imidlertid vanligvis mer kompakt kode, og gjør at problemet kan sendes til funksjonen nærmere det punktet det er nødvendig.