Rekursjon
Rekursjon er en programmeringsteknikk der en funksjon kaller seg selv for å løse et problem i mindre deler. Det er spesielt nyttig for problemer med repeterende struktur eller naturlige delproblemer.
Nøkkelkomponentene 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 i form av 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 i oppgaver som å behandle trær, utforske stier eller dele opp 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)
La oss gå steg for steg gjennom 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åelse av flyten:
Hver gang funksjonen kaller seg selv, legges en ny ramme til i call stack (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 ett etter ett 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 å brukeisdigit()
-metoden i enif
-betingelse. - Hvis det er et siffer, konkatenér det med resultatet av et rekursivt kall til
format_phone_number
, hvor du sender 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
Can you explain what happens if there is no base case in a recursive function?
What are some common mistakes to avoid when using recursion?
Can you show another example of recursion in Python?
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. Det er spesielt nyttig for problemer med repeterende struktur eller naturlige delproblemer.
Nøkkelkomponentene 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 i form av 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 i oppgaver som å behandle trær, utforske stier eller dele opp 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)
La oss gå steg for steg gjennom 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åelse av flyten:
Hver gang funksjonen kaller seg selv, legges en ny ramme til i call stack (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 ett etter ett 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 å brukeisdigit()
-metoden i enif
-betingelse. - Hvis det er et siffer, konkatenér det med resultatet av et rekursivt kall til
format_phone_number
, hvor du sender 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