Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe Algorytmy i podstawy informatyki

Odwołanie funkcji do samej siebie to

A. rekurencja.
B. hermetyzacja.
C. iteracja.
D. dziedziczenie.

Pytanie z egzaminu CKE, styczeń 2015 (arkusz E.14-X-15.01).

Odwołanie funkcji do samej siebie nazywa się rekurencją. Chodzi o sytuację, w której funkcja w swoim ciele wywołuje samą siebie, najczęściej z innym, zwykle mniejszym albo prostszym zestawem danych. Kluczowa jest tu baza rekurencji, czyli warunek zatrzymania. Bez niej program będzie wywoływał funkcję w kółko, aż do przepełnienia stosu wywołań, co w praktyce kończy się błędem typu stack overflow albo zawieszeniem działania. Z mojego doświadczenia to jest właśnie najczęstsza pułapka przy nauce rekurencji: ktoś pamięta o wywołaniu funkcji, ale zapomina kiedy ma się ono skończyć. Rekurencja jest używana np. przy obliczaniu silni, przechodzeniu po drzewach katalogów, analizie struktury DOM w JavaScript, przeszukiwaniu grafów czy parsowaniu zagnieżdżonych danych JSON. W dobrych praktykach programistycznych warto sprawdzać, czy rekurencja jest czytelniejsza niż pętla i czy nie grozi zbyt dużą liczbą wywołań. Czasem iteracja będzie wydajniejsza, ale przy strukturach drzewiastych rekurencja bywa po prostu bardzo naturalna i elegancka.
W tym pytaniu chodzi o podstawowe pojęcie z algorytmiki i programowania: jeżeli funkcja wywołuje samą siebie, mówimy o rekurencji. Łatwo to pomylić z innymi terminami, bo wszystkie występują w programowaniu, ale opisują zupełnie inne mechanizmy. Dziedziczenie dotyczy programowania obiektowego. Oznacza tworzenie klasy na podstawie innej klasy, tak aby przejąć jej pola i metody, a potem ewentualnie je rozszerzyć albo nadpisać. Nie ma tu warunku, że funkcja ma wołać samą siebie, więc to zupełnie inny temat. Hermetyzacja też należy do programowania obiektowego i polega na ukrywaniu szczegółów działania obiektu oraz kontrolowaniu dostępu do danych, na przykład przez modyfikatory private, protected i public. To dobra praktyka projektowa, ale nie opisuje sposobu wykonywania algorytmu. Iteracja oznacza powtarzanie instrukcji w pętli, na przykład for, while albo foreach. Może rozwiązywać podobne problemy co rekurencja, jak liczenie silni czy przetwarzanie listy, ale technicznie działa inaczej: zamiast kolejnych wywołań funkcji mamy powtarzanie bloku kodu. Typowy błąd myślowy polega na tym, że ktoś widzi powtarzanie czynności i od razu wybiera iterację. Rekurencja też powtarza działanie, ale przez mechanizm wywołań funkcji i koniecznie potrzebuje warunku stopu. Moim zdaniem warto zapamiętać prosto: funkcja wywołuje samą siebie, czyli rekurencja; pętla powtarza blok kodu, czyli iteracja.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.