Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Rekursion | Rekursion och Lambda-Funktioner
Handledning om Pythonfunktioner

bookRekursion

Note
Definition

Rekursion är en programmeringsteknik där en funktion anropar sig själv för att lösa ett problem i mindre delar. Det är särskilt användbart för problem med upprepande struktur eller naturliga delproblem.

De viktigaste elementen i rekursion är:

  • Basfall: villkoret som stoppar rekursionen;
  • Rekursivt fall: delen där funktionen anropar sig själv med ett enklare argument.

Varför använda rekursion?

Vissa problem kan naturligt uttryckas i form av mindre delproblem. Rekursion ger ett tydligt och elegant sätt att lösa dessa genom att låta en funktion anropa sig själv för att hantera enklare fall. Det används ofta vid uppgifter som att bearbeta trädstrukturer, utforska vägar eller dela upp strukturer (t.ex. listor, strängar).

1234567
def 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)
copy

Låt oss gå steg för steg genom hur detta rekursiva program fungerar:

  1. Villkorskontroll: om times > 0, fortsätter funktionen. I detta fall är times = 3, så villkoret är sant;
  2. Skriver ut meddelande: funktionen skriver ut "Hello, Recursion!";
  3. Rekursivt anrop: funktionen anropar sig själv med times - 1;
  4. Upprepning: denna process fortsätter tills times är 0;
  5. Avslut: när villkoret times > 0 inte längre är sant, avslutas rekursionen och programmet slutförs.

Resultat: Meddelandet "Hello, Recursion!" skrivs ut tre gånger.

Förståelse av flödet:

Varje gång funktionen anropar sig själv läggs en ny ram till i anropsstacken (en minnesstruktur som håller reda på aktiva funktionsanrop). Funktionen fortsätter att anropa sig själv med ett mindre times-värde. När den når basfallet (times == 0), stannar den. Därefter avslutas varje tidigare anrop ett efter ett i omvänd ordning. Detta backtracking-beteende är avgörande för hur rekursion fungerar.

Uppgift

Swipe to start coding

Givet en sträng som representerar ett telefonnummer, vilken kan innehålla mellanslag, bindestreck, parenteser eller andra icke-numeriska tecken. Målet är att extrahera endast siffrorna med hjälp av rekursion.

  1. Om indatasträngen number är tom, returnera en tom sträng.
  2. Kontrollera om första tecknet i strängen number är en siffra med metoden isdigit() i en if-sats.
  3. Om det är en siffra, konkatenera den med resultatet av ett rekursivt anrop till format_phone_number, där delsträngen från och med andra tecknet skickas vidare.
  4. Om det inte är en siffra, gör ett rekursivt anrop till format_phone_number och hoppa över första tecknet.

Lösning

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 1
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Suggested prompts:

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?

close

Awesome!

Completion rate improved to 4.35

bookRekursion

Svep för att visa menyn

Note
Definition

Rekursion är en programmeringsteknik där en funktion anropar sig själv för att lösa ett problem i mindre delar. Det är särskilt användbart för problem med upprepande struktur eller naturliga delproblem.

De viktigaste elementen i rekursion är:

  • Basfall: villkoret som stoppar rekursionen;
  • Rekursivt fall: delen där funktionen anropar sig själv med ett enklare argument.

Varför använda rekursion?

Vissa problem kan naturligt uttryckas i form av mindre delproblem. Rekursion ger ett tydligt och elegant sätt att lösa dessa genom att låta en funktion anropa sig själv för att hantera enklare fall. Det används ofta vid uppgifter som att bearbeta trädstrukturer, utforska vägar eller dela upp strukturer (t.ex. listor, strängar).

1234567
def 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)
copy

Låt oss gå steg för steg genom hur detta rekursiva program fungerar:

  1. Villkorskontroll: om times > 0, fortsätter funktionen. I detta fall är times = 3, så villkoret är sant;
  2. Skriver ut meddelande: funktionen skriver ut "Hello, Recursion!";
  3. Rekursivt anrop: funktionen anropar sig själv med times - 1;
  4. Upprepning: denna process fortsätter tills times är 0;
  5. Avslut: när villkoret times > 0 inte längre är sant, avslutas rekursionen och programmet slutförs.

Resultat: Meddelandet "Hello, Recursion!" skrivs ut tre gånger.

Förståelse av flödet:

Varje gång funktionen anropar sig själv läggs en ny ram till i anropsstacken (en minnesstruktur som håller reda på aktiva funktionsanrop). Funktionen fortsätter att anropa sig själv med ett mindre times-värde. När den når basfallet (times == 0), stannar den. Därefter avslutas varje tidigare anrop ett efter ett i omvänd ordning. Detta backtracking-beteende är avgörande för hur rekursion fungerar.

Uppgift

Swipe to start coding

Givet en sträng som representerar ett telefonnummer, vilken kan innehålla mellanslag, bindestreck, parenteser eller andra icke-numeriska tecken. Målet är att extrahera endast siffrorna med hjälp av rekursion.

  1. Om indatasträngen number är tom, returnera en tom sträng.
  2. Kontrollera om första tecknet i strängen number är en siffra med metoden isdigit() i en if-sats.
  3. Om det är en siffra, konkatenera den med resultatet av ett rekursivt anrop till format_phone_number, där delsträngen från och med andra tecknet skickas vidare.
  4. Om det inte är en siffra, gör ett rekursivt anrop till format_phone_number och hoppa över första tecknet.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 1
single

single

some-alt