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.

▶ Ćwicz ten temat fiszki, quiz i prawda/fałsz — z wynikiem i powtórkami
Matrioszki ustawione od największej do najmniejszej
Matrioszka — lalka w lalce, jak funkcja wywołująca samą siebie (Autor: Tris_T7, CC BY-SA 4.0, źródło)

Ważne daty

Ważne postacie

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:

  1. Wywołuje inną funkcję
  2. Wywołuje samą siebie
  3. Nie ma argumentów
  4. 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:

  1. 7
  2. 8
  3. 9
  4. 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…

  1. Kończy się szybciej
  2. Prowadzi do przepełnienia stosu
  3. Zwraca zero
  4. 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ę…

  1. Da się zapisać także pętlą
  2. Można zapisać wyłącznie rekurencyjnie
  3. Trzeba zapisać w osobnym pliku
  4. 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:

  1. działa szybciej
  2. wywołuje się bez końca
  3. zwraca None
  4. 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