Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Rekursjon | Rekursjon og Lambda-funksjoner
Python-funksjoner Veiledning

bookRekursjon

Note
Definisjon

Rekursjon er en programmeringsteknikk der en funksjon kaller seg selv for å løse et problem i mindre deler. Det er spesielt nyttig for problemer med repeterende struktur eller naturlige delproblemer.

Nøkkelkomponentene i rekursjon er:

  • Basis-tilfelle: betingelsen som stopper rekursjonen;
  • Rekursivt tilfelle: delen der funksjonen kaller seg selv med et enklere input.

Hvorfor bruke rekursjon?

Noen problemer kan naturlig uttrykkes i form av mindre delproblemer. Rekursjon gir en ryddig og elegant måte å løse disse på ved at en funksjon kaller seg selv for å håndtere de enklere tilfellene. Det brukes ofte i oppgaver som å behandle trær, utforske stier eller dele opp strukturer (f.eks. lister, strenger).

1234567
def print_message(message, times): if times > 0: # Base case: stop when times is 0 print(message) print_message(message, times - 1) # Recursive case # Function call print_message("Hello, Recursion!", 3)
copy

La oss gå steg for steg gjennom hvordan dette rekursive programmet fungerer:

  1. Betingelsessjekk: hvis times > 0, fortsetter funksjonen. I dette tilfellet er times = 3, så betingelsen er sann;
  2. Skriv ut melding: funksjonen skriver ut "Hello, Recursion!";
  3. Rekursivt kall: funksjonen kaller seg selv med times - 1;
  4. Repetisjon: denne prosessen fortsetter til times er lik 0;
  5. Avslutning: når betingelsen times > 0 ikke lenger er sann, stopper rekursjonen, og programmet fullføres.

Resultat: Meldingen "Hello, Recursion!" skrives ut tre ganger.

Forståelse av flyten:

Hver gang funksjonen kaller seg selv, legges en ny ramme til i call stack (en minnestruktur som holder oversikt over aktive funksjonskall). Funksjonen fortsetter å kalle seg selv med en mindre times-verdi. Når den når basis-tilfellet (times == 0), stopper den. Deretter fullføres hvert tidligere kall ett etter ett i motsatt rekkefølge. Denne tilbakesporingsatferden er essensiell for hvordan rekursjon fungerer.

Oppgave

Swipe to start coding

Gitt en streng som representerer et telefonnummer, som kan inneholde mellomrom, bindestreker, parenteser eller andre ikke-numeriske tegn. Målet er å ekstrahere kun sifrene ved hjelp av rekursjon.

  1. Hvis inndata-strengen number er tom, returner en tom streng.
  2. Sjekk om det første tegnet i strengen number er et siffer ved å bruke isdigit()-metoden i en if-betingelse.
  3. Hvis det er et siffer, konkatenér det med resultatet av et rekursivt kall til format_phone_number, hvor du sender delstrengen som starter fra andre tegn.
  4. Hvis det ikke er et siffer, gjør et rekursivt kall til format_phone_number, og hopp over første tegn.

Løsning

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 1
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Suggested prompts:

Can you explain what happens if there is no base case in a recursive function?

What are some common mistakes to avoid when using recursion?

Can you show another example of recursion in Python?

close

Awesome!

Completion rate improved to 4.35

bookRekursjon

Sveip for å vise menyen

Note
Definisjon

Rekursjon er en programmeringsteknikk der en funksjon kaller seg selv for å løse et problem i mindre deler. Det er spesielt nyttig for problemer med repeterende struktur eller naturlige delproblemer.

Nøkkelkomponentene i rekursjon er:

  • Basis-tilfelle: betingelsen som stopper rekursjonen;
  • Rekursivt tilfelle: delen der funksjonen kaller seg selv med et enklere input.

Hvorfor bruke rekursjon?

Noen problemer kan naturlig uttrykkes i form av mindre delproblemer. Rekursjon gir en ryddig og elegant måte å løse disse på ved at en funksjon kaller seg selv for å håndtere de enklere tilfellene. Det brukes ofte i oppgaver som å behandle trær, utforske stier eller dele opp strukturer (f.eks. lister, strenger).

1234567
def print_message(message, times): if times > 0: # Base case: stop when times is 0 print(message) print_message(message, times - 1) # Recursive case # Function call print_message("Hello, Recursion!", 3)
copy

La oss gå steg for steg gjennom hvordan dette rekursive programmet fungerer:

  1. Betingelsessjekk: hvis times > 0, fortsetter funksjonen. I dette tilfellet er times = 3, så betingelsen er sann;
  2. Skriv ut melding: funksjonen skriver ut "Hello, Recursion!";
  3. Rekursivt kall: funksjonen kaller seg selv med times - 1;
  4. Repetisjon: denne prosessen fortsetter til times er lik 0;
  5. Avslutning: når betingelsen times > 0 ikke lenger er sann, stopper rekursjonen, og programmet fullføres.

Resultat: Meldingen "Hello, Recursion!" skrives ut tre ganger.

Forståelse av flyten:

Hver gang funksjonen kaller seg selv, legges en ny ramme til i call stack (en minnestruktur som holder oversikt over aktive funksjonskall). Funksjonen fortsetter å kalle seg selv med en mindre times-verdi. Når den når basis-tilfellet (times == 0), stopper den. Deretter fullføres hvert tidligere kall ett etter ett i motsatt rekkefølge. Denne tilbakesporingsatferden er essensiell for hvordan rekursjon fungerer.

Oppgave

Swipe to start coding

Gitt en streng som representerer et telefonnummer, som kan inneholde mellomrom, bindestreker, parenteser eller andre ikke-numeriske tegn. Målet er å ekstrahere kun sifrene ved hjelp av rekursjon.

  1. Hvis inndata-strengen number er tom, returner en tom streng.
  2. Sjekk om det første tegnet i strengen number er et siffer ved å bruke isdigit()-metoden i en if-betingelse.
  3. Hvis det er et siffer, konkatenér det med resultatet av et rekursivt kall til format_phone_number, hvor du sender delstrengen som starter fra andre tegn.
  4. Hvis det ikke er et siffer, gjør et rekursivt kall til format_phone_number, og hopp over første tegn.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 1
single

single

some-alt