Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Rekursion | Rekursion og Lambda-Funktioner
Python Funktioner Tutorial
Sektion 5. Kapitel 1
single

single

Rekursion

Stryg for at vise menuen

Note
Definition

En rekursiv funktion er en funktion, der kalder sig selv for at løse et problem ved at opdele det i mindre, enklere dele.

De vigtigste elementer i rekursion er:

  • Basis-tilfælde: betingelsen, der stopper rekursionen;
  • Rekursivt tilfælde: den del, hvor funktionen kalder sig selv med et simplere input.

Hvorfor bruge rekursion?

Nogle problemer kan naturligt udtrykkes som mindre delproblemer. Rekursion giver en klar og elegant måde at løse disse på ved at lade en funktion kalde sig selv for at håndtere de enklere tilfælde. Det bruges ofte til opgaver som behandling af træstrukturer, udforskning af stier eller opdeling af strukturer (f.eks. lister, strenge).

Et simpelt 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å trin for trin for at forstå, hvordan dette fungerer:

  1. times = 3 → betingelsen er sand, udskriv besked, kald print_message(message, 2);
  2. times = 2 → betingelsen er sand, udskriv besked, kald print_message(message, 1);
  3. times = 1 → betingelsen er sand, udskriv besked, kald print_message(message, 0);
  4. times = 0 → betingelsen er falsk, rekursionen stopper.

Resultat: beskeden udskrives tre gange.

Kaldestakken

Hver gang funktionen kalder sig selv, tilføjes en ny ramme til kaldestakken — en hukommelsesstruktur, der holder styr på aktive funktionskald. Når basis-tilfældet nås, afsluttes hvert tidligere kald ét efter ét i omvendt rækkefølge.

Note
Bemærk

Enhver rekursiv funktion skal have et basis-tilfælde. Uden dette vil funktionen kalde sig selv uendeligt og forårsage en RecursionError.

Opgave

Swipe to start coding

Implementér en rekursiv funktion list_sum, der beregner summen af alle elementer i en liste.

  1. Hvis listen numbers er tom, returnér 0 — dette er basis-tilfældet;
  2. Ellers returneres det første element lagt sammen med resultatet af et rekursivt kald med resten af listen.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 1
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

some-alt