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.

Rekursjonsbegrepet illustreres kanskje best 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 "Go, Hent, Return" til den siste helvetesilden er blitt brukt. På det tidspunktet står takfekeren fritt til å gå videre til neste jobb eller dra hjem.

Selv om eksemplet iS En forenkling, den inneholder 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.

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

Erfarne programmerere kan anerkjenne likheten mellom en rekursiv samtale og en "for" eller "while" loop. Hvis for eksempel målet er å finne det totale lagertallet av alle aksjer med del nUmbers større enn 999, en "for" Loop forteller programmet om å finne alle kvalifiserende forekomster og en "mens" -løyfe forteller programmet om å utføre løkken bare mens den oppgitte tilstanden er gyldig. En rekursiv samtale kan sies å kombinere noen av funksjonene i disse løkkene med en "if-then-elv" -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.

ANDRE SPRÅK