Rekurencja
Informatyka, klasa 8 · Algorytmy
Najważniejsze w skrócie
Rekurencja to sytuacja, w której funkcja wywołuje samą siebie na mniejszym zadaniu. Silnia z pięciu to pięć razy silnia z czterech i tak dalej.
Każda rekurencja potrzebuje warunku bazowego — przypadku, który rozwiązujemy wprost, bez kolejnego wywołania. Bez niego program zapętli się i przerwie działanie.
Rekurencja bywa krótsza i czytelniejsza niż pętla, zwłaszcza przy strukturach zagnieżdżonych: drzewach katalogów, fraktalach czy ciągu Fibonacciego.

Ważne daty
- warunek bazowy — przypadek bez wywołania
- krok rekurencyjny — wywołanie na mniejszym zadaniu
- silnia — n razy silnia z n-1
- Fibonacci — suma dwóch poprzednich wyrazów
- stos — pamięć na kolejne wywołania
Ważne postacie
- Warunek bazowy — kończy zagłębianie
- Wywołanie rekurencyjne — ta sama funkcja, mniejsze dane
- Stos wywołań — przechowuje niedokończone wywołania
- Fraktal — wzór powtarzający sam siebie
Pojęcia
- Co to rekurencja?
- Wywoływanie funkcji przez samą siebie.
- Po co warunek bazowy?
- Kończy zagłębianie i zwraca wynik wprost.
- Co się stanie bez warunku bazowego?
- Nastąpi przepełnienie stosu.
- Ile wynosi silnia z zera?
- Jeden.
- Jak zbudowany jest ciąg Fibonacciego?
- Każdy wyraz to suma dwóch poprzednich.
- Co przechowuje stos wywołań?
- Niedokończone wywołania funkcji.
- Kiedy rekurencja jest wygodna?
- Przy strukturach zagnieżdżonych, np. drzewach.
- Czy każdą rekurencję da się zapisać pętlą?
- Zwykle tak, choć bywa mniej czytelnie.
- Ile wynosi silnia z pięciu?
- 120 — iloczyn liczb od 1 do 5.
- Ile wynosi siódmy wyraz ciągu 1, 1, 2, 3, 5, 8, ...?
- Trzynaście — suma dwóch poprzednich wyrazów, czyli 5 plus 8.
- Jak powstaje fraktal taki jak trójkąt Sierpińskiego?
- Przez powtarzanie tego samego wzoru w coraz mniejszej skali.
- Dlaczego naiwne rekurencyjne liczenie Fibonacciego jest wolne?
- Bo wielokrotnie liczy te same wartości od nowa.
Sprawdź się
1. Rekurencja polega na tym, że funkcja:
- Wywołuje inną funkcję
- Wywołuje samą siebie
- Nie ma argumentów
- Zwraca None
Pokaż odpowiedź
B. Wywołuje samą siebie — Zadanie jest sprowadzane do mniejszego przypadku.
2. W ciągu Fibonacciego po 3 i 5 następuje:
- 7
- 8
- 9
- 15
Pokaż odpowiedź
B. 8 — Każdy wyraz jest sumą dwóch poprzednich, więc po 3 i 5 przychodzi 8. Liczba 15 to ich iloczyn, a nie suma.
3. Wywołanie rekurencyjne z argumentem, który nie maleje…
- Kończy się szybciej
- Prowadzi do przepełnienia stosu
- Zwraca zero
- Jest zalecane
Pokaż odpowiedź
B. Prowadzi do przepełnienia stosu — Program przerwie działanie komunikatem o przekroczeniu głębokości rekurencji.
4. Każdą rekurencję…
- Da się zapisać także pętlą
- Można zapisać wyłącznie rekurencyjnie
- Trzeba zapisać w osobnym pliku
- Wykonuje się szybciej niż pętlę
Pokaż odpowiedź
B. Można zapisać wyłącznie rekurencyjnie — Wersja z pętlą bywa szybsza, rekurencyjna często czytelniejsza.
5. Bez warunku zakończenia rekurencja:
- działa szybciej
- wywołuje się bez końca
- zwraca None
- zamienia się w pętlę for
Pokaż odpowiedź
B. wywołuje się bez końca — Kończy się błędem przepełnienia stosu.
Więcej pytań — razem 50 fiszek, pytań i zdań prawda/fałsz — czeka w ćwiczeniach.
▶ Ćwicz ten temat fiszki, quiz i prawda/fałsz — z wynikiem i powtórkami