single
Rekursjon
Sveip for å vise menyen
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:
- Grunnleggende 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 å behandle trær, utforske stier eller dele opp strukturer (f.eks. lister, strenger).
Et enkelt 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å gjennom steg for steg for å forstå hvordan dette fungerer:
times = 3→ betingelsen er sann, skriver ut melding, kallerprint_message(message, 2);times = 2→ betingelsen er sann, skriver ut melding, kallerprint_message(message, 1);times = 1→ betingelsen er sann, skriver ut melding, kallerprint_message(message, 0);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.
Alle rekursive funksjoner må ha et basis-tilfelle. Uten dette vil funksjonen kalle seg selv uendelig og føre til en RecursionError.
Sveip for å begynne å kode
Implementer en rekursiv funksjon list_sum som beregner summen av alle elementene i en liste.
- Hvis listen
numberser tom, returner0— dette er basis-tilfellet; - Ellers, skill ut første element fra resten. Returner første element (
numbers[0]) lagt til resultatet av å kallelist_sum()på nytt med resten av listen (numbers[1:]).
Løsning
Takk for tilbakemeldingene dine!
single
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår