Rekursjon
Rekursjon er en programmeringsteknikk der en funksjon kaller seg selv for å løse et problem i mindre deler. Dette er spesielt nyttig for problemer med repeterende struktur eller naturlige delproblemer.
Nøkkelkomponentene 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 bryte ned strukturer (f.eks. lister, strenger).
1234567def 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)
Gå steg for steg for å forstå hvordan dette rekursive programmet fungerer:
- Betingelsessjekk: hvis
times > 0
, fortsetter funksjonen. I dette tilfellet ertimes = 3
, så betingelsen er sann; - Skriv ut melding: funksjonen skriver ut
"Hello, Recursion!"
; - Rekursivt kall: funksjonen kaller seg selv med
times - 1
; - Repetisjon: denne prosessen fortsetter til
times
er lik 0; - 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å flyten:
Hver gang funksjonen kaller seg selv, legges en ny ramme til i kallstakken (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 én etter én i motsatt rekkefølge. Denne tilbakesporingsatferden er essensiell for hvordan rekursjon fungerer.
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.
- Hvis inndata-strengen
number
er tom, returner en tom streng. - Sjekk om det første tegnet i strengen
number
er et siffer ved å bruke metodenisdigit()
i enif
-betingelse. - Hvis det er et siffer, konkatenér det med resultatet av et rekursivt kall til
format_phone_number
, hvor du sender inn delstrengen som starter fra andre tegn. - Hvis det ikke er et siffer, gjør et rekursivt kall til
format_phone_number
, og hopp over første tegn.
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
Awesome!
Completion rate improved to 4.35
Rekursjon
Sveip for å vise menyen
Rekursjon er en programmeringsteknikk der en funksjon kaller seg selv for å løse et problem i mindre deler. Dette er spesielt nyttig for problemer med repeterende struktur eller naturlige delproblemer.
Nøkkelkomponentene 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 bryte ned strukturer (f.eks. lister, strenger).
1234567def 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)
Gå steg for steg for å forstå hvordan dette rekursive programmet fungerer:
- Betingelsessjekk: hvis
times > 0
, fortsetter funksjonen. I dette tilfellet ertimes = 3
, så betingelsen er sann; - Skriv ut melding: funksjonen skriver ut
"Hello, Recursion!"
; - Rekursivt kall: funksjonen kaller seg selv med
times - 1
; - Repetisjon: denne prosessen fortsetter til
times
er lik 0; - 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å flyten:
Hver gang funksjonen kaller seg selv, legges en ny ramme til i kallstakken (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 én etter én i motsatt rekkefølge. Denne tilbakesporingsatferden er essensiell for hvordan rekursjon fungerer.
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.
- Hvis inndata-strengen
number
er tom, returner en tom streng. - Sjekk om det første tegnet i strengen
number
er et siffer ved å bruke metodenisdigit()
i enif
-betingelse. - Hvis det er et siffer, konkatenér det med resultatet av et rekursivt kall til
format_phone_number
, hvor du sender inn delstrengen som starter fra andre tegn. - Hvis det ikke er et siffer, gjør et rekursivt kall til
format_phone_number
, og hopp over første tegn.
Løsning
Takk for tilbakemeldingene dine!
single