single
Rekursion
Stryg for at vise menuen
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
123456def 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:
times = 3→ betingelsen er sand, udskriv besked, kaldprint_message(message, 2);times = 2→ betingelsen er sand, udskriv besked, kaldprint_message(message, 1);times = 1→ betingelsen er sand, udskriv besked, kaldprint_message(message, 0);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.
Enhver rekursiv funktion skal have et basis-tilfælde. Uden dette vil funktionen kalde sig selv uendeligt og forårsage en RecursionError.
Swipe to start coding
Implementér en rekursiv funktion list_sum, der beregner summen af alle elementer i en liste.
- Hvis listen
numberser tom, returnér0— dette er basis-tilfældet; - Ellers returneres det første element lagt sammen med resultatet af et rekursivt kald med resten af listen.
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat