Funkcje rekurencyjne — część 2
Część sekcji Logika i przepływ programu ścieżki Python w Coddy. Lekcja 61 z 78.
Funkcje rekurencyjne zazwyczaj składają się z dwóch części:
- Przypadek bazowy: określa, kiedy rekurencja powinna się zakończyć.
- Krok rekurencyjny: wywołuje samą funkcję z mniejszym argumentem.
Przykład: Obliczanie silni z użyciem rekurencji:
def factorial(n):
if n == 1: # Przypadek bazowy
return 1
return n * factorial(n - 1) # Wywołanie rekurencyjne
print(factorial(5)) # Wynik: 120Tutaj funkcja wywołuje samą siebie z argumentem n - 1, aż osiągnie 1, gdzie rekurencja się kończy.
Przykład: odwracanie ciągu znaków:
def recursive_reverse(s):
if len(s) <= 1: # Przypadek bazowy: pusty ciąg znaków lub ciąg jednoznakowy
return s
else:
return recursive_reverse(s[1:]) + s[0] # Krok rekurencyjny
text = "hello"
result = recursive_reverse(text)
print(result)
# Wynik: ollehW tym przykładzie funkcja recursive_reverse wywołuje samą siebie z resztą ciągu znaków (s[1:]), aż ciąg znaków będzie pusty lub będzie zawierał tylko jeden znak. Każde wywołanie dołącza pierwszy znak do wyniku wywołania rekurencyjnego, skutecznie odwracając ciąg znaków.
Wyzwanie
ŁatwyNapisz funkcję rekurencyjną o nazwie fibonacci, która przyjmuje dodatnią liczbę całkowitą n jako argument i zwraca n-tą liczbę Fibonacciego. Ciąg Fibonacciego jest zdefiniowany następująco:
fibonacci(1) = 0fibonacci(2) = 1fibonacci(n) = fibonacci(n-1) + fibonacci(n-2)dlan > 2.
Przykładowe wejście:
n = 6Przykładowe wyjście:
5Spróbuj swoich sił
def fibonacci(n):
# Napisz tutaj kodTa lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Odkrywanie zmiennych
StałeWielokrotne przypisania zmiennychZamiana zmiennychZmienne zastępczeZaokrąglanie liczbKonwersja na listę4Aplikacja książki kontaktów
Wyświetl menuDodaj kontakt7Zbiory — część 2
Działania matematyczne — część 1Działania matematyczne — część 2Powtórka — poszukiwanie skarbówPodzbiory i nadzbioryIterowanie po zbiorachPowtórka — śledzenie turnieju10Podstawowe składanie list
SkładniaTworzenie prostych listDodawanie warunkówUżywanie agregacji danychPowtórka – dom listPowtórka – elementy wolności13System zarządzania zapasami
Przegląd projektuDodawanie produktu2Słowniki — część 1
Czym jest słownik?Tworzenie słownikaDostęp do wartościModyfikowanie słownikówPowtórzenie — menedżer przepisów5Zaawansowane podejmowanie decyzji
Operator warunkowySprawdzanie przynależnościSprawdzanie tożsamościBłędy wcięćPowtórka — filtr wakacyjny8Menedżer rekordów uczniów
Przegląd projektuDodawanie ucznia11Zaawansowane funkcje
Zwracanie wielu wartościFunkcje lambda — część 1Funkcje lambda — część 2Wyzwanie podsumowujące — sortowanie z lambdaFunkcje rekurencyjne — część 1Funkcje rekurencyjne — część 2Podsumowanie — suma elementów zagnieżdżonej listy14Funkcje wyższego rzędu
Funkcja mapFunkcja filterPodsumowanie – walidator adresów e-mailPodsumowanie – procesor liczb3Słowniki, część 2
Metody słownikówZagnieżdżone słownikiSprawdzanie kluczyIterowanie po słownikachPowtórzenie — licznik częstotliwości9Zaawansowana agregacja danych
Używanie sumyZnajdowanie minimum i maksimumEfektywne sortowanie danychPowtórka – sortowanie słowników12Podstawowa obsługa błędów
Czym jest obsługa błędów?Blok try i exceptObsługa wielu wyjątkówPodsumowanie – błędy w koszyku zakupowymPoćwicz samodzielnie: Kompilator Python online