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
Seksjon 5. Kapittel 1
single

single

Rekursjon

Sveip for å vise menyen

Note
Definisjon

En rekursiv funksjon er en funksjon som kaller seg selv for å løse et problem ved å dele det opp i mindre, enklere deler.

De viktigste elementene 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 som 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 til oppgaver som å prosessere trær, utforske stier eller dele opp strukturer (f.eks. lister, strenger).

Et enkelt eksempel

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

Gå gjennom stegene for å forstå hvordan dette fungerer:

  1. times = 3 → betingelsen er sann, skriver ut melding, kaller print_message(message, 2);
  2. times = 2 → betingelsen er sann, skriver ut melding, kaller print_message(message, 1);
  3. times = 1 → betingelsen er sann, skriver ut melding, kaller print_message(message, 0);
  4. times = 0 → betingelsen er usann, rekursjonen stopper.

Resultat: meldingen skrives ut tre ganger.

Kallstakken

Hver gang funksjonen kaller seg selv, legges en ny ramme til kallstakken — en minnestruktur som holder oversikt over aktive funksjonskall. Når basis-tilfellet er nådd, fullføres hvert tidligere kall ett etter ett i motsatt rekkefølge.

Note
Merk

Alle rekursive funksjoner må ha et basis-tilfelle. Uten dette vil funksjonen kalle seg selv uendelig og føre til en RecursionError.

Oppgave

Sveip for å begynne å kode

Implementer en rekursiv funksjon list_sum som beregner summen av alle elementene i en liste.

  1. Hvis listen numbers er tom, returner 0 — dette er basis-tilfellet;
  2. Ellers, returner første element lagt til resultatet av et rekursivt kall med resten av listen.

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

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

some-alt