Avsnitt 5. Kapitel 2
single
Utmaning: Formatering av ett telefonnummer
Svep för att visa menyn
Kom ihåg att en rekursiv funktion löser ett problem genom att anropa sig själv med en enklare indata, tills den når basfallet som stoppar rekursionen:
1234def list_sum(numbers): if not numbers: # Base case return 0 return numbers[0] + list_sum(numbers[1:]) # Recursive case
Observera hur varje rekursivt anrop arbetar med en mindre version av indatan — i detta fall listan utan sitt första element. Samma metod gäller vid bearbetning av strängar tecken för tecken.
Uppgift
Svep för att börja koda
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.
- Om indatasträngen
numberär tom, returnera en tom sträng; - Kontrollera om första tecknet i strängen
numberär en siffra med metodenisdigit(); - Om det är en siffra, konkatenera den med resultatet av ett rekursivt anrop där delsträngen från och med andra tecknet skickas in;
- Om det inte är en siffra, gör ett rekursivt anrop där första tecknet hoppas över.
Lösning
Var allt tydligt?
Tack för dina kommentarer!
Avsnitt 5. Kapitel 2
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal