Video: Week 0 2025
Rekursjon er et stort, skummelt ord som du ofte hører om programmering, spesielt den frustrerende typen programmering de lærer på universitetet. Selv om det er et enkelt konsept å beskrive, er det virkelig en tankegang når det gjelder å forstå hvordan rekursjonen fungerer. De fleste folk aksepterer bare det og fortsetter. Ikke her!
Rekursjon er i utgangspunktet prosessen med en funksjon som kaller seg. For eksempel:
ugyldig funksjon (int x) {funct (x);}
I dette stykket kode ser du et forferdelig eksempel på en rekursiv funksjon, men det tjener illustrative formål her: Funct () funksjonen kaller seg selv. Det er rekursjon. Nå er det som skjer i dette eksemplet i utgangspunktet en endeløs sløyfe, og takket være en teknisk noe-eller-annen, kalt stack pointe r , , krasjer datamaskinen til slutt. Men det er bare en illustrasjon.
For rekursjon til arbeid, må funksjonen ha en bailout-tilstand, akkurat som en løkke. Derfor må verdien som sendes til den rekursive funksjonen eller returverdien, testes. Her er et bedre eksempel på en rekursiv funksjon:
ugyldig rekursjon (int x) {if (x == 0) returnere; ellers {setter ("Boop!"); rekursjon (- x);}}
Rekursjonen () -funksjonen godtar verdien x . Hvis x er lik null, bøyer funksjonen. Ellers kalles funksjonen igjen, men verdien på x er redusert. Forbedringsprefiksoperatøren brukes slik at verdien på x er redusert før samtalen blir gjort.
Eksempelrekursjon () -funksjonen spretter i utgangspunktet ut teksten Boop! et gitt antall ganger. Så hvis rekursjon () kalles med verdien 10, ser du at teksten vises ti ganger.
Den vanvittige delen om rekursjon er at funksjonen fortsetter å kalle seg, pakker seg tettere og strammere, som om den er i en spiral. I det foregående eksempel slipper tilstanden x == 1 endelig det vridne rotet, og drar stadig tilbake til funksjonen er ferdig.
Følgende kode viser et fullt program ved hjelp av sample recursion () -funksjonen.
#include void recursion (int x); int main () {rekursjon (10); returnere (0);} ugyldig rekursjon (int x) {hvis (x == 0) returnere; ellers {setter ("Boop!"); rekursjon (- x);}}
En vanlig demonstrasjon av rekursjon er en faktorfunksjon. faktorial er resultatet av å multiplisere en verdi ved hvert av sine positive heltal. For eksempel:
4! = 4 × 3 × 2 × 1
Resultatet av denne faktoren er 24. Datamaskinen kan også gjøre denne beregningen ved å enten implementere en sløyfe eller opprette en rekursiv funksjon.Her er en slik funksjon:
int faktorial (int x) {hvis (x == 1) returnere (x); ellers returnere (x * factorial (x-1));}
Som med de andre rekursive funksjonene inneholder funksjonen factorial () en utgangstilstand: x == 1. Ellers kalles funksjonen igjen med en mindre enn gjeldende verdi på x . Men all handlingen foregår med returverdiene.
