Strona główna › Pytania MED.07 › Pytanie 122
MED.07 · pytanie #122
Zapisana w ramce funkcja zawiera <br><br> <table><tr><td>Funkcja oblicz(n) Jeżeli n=0 oblicz=1 W przeciwnym wypadku oblicz=(n-1)*oblicz(n-1)</td></tr></table>
- Ainkrementację.
- Biterację.
- Crekurencję.
- Dpermutację.
Poprawna odpowiedź: C. rekurencję.
Kliknij odpowiedź, którą uważasz za poprawną.
Wyjaśnienie
Funkcja pokazana w ramce to klasyczny przykład rekurencji, bo sama siebie wywołuje wewnątrz własnej definicji. Właśnie to jest istotą rekurencji – funkcja wykonuje część pracy, a potem przekazuje dalsze wykonywanie sobie samej, tylko z innym (najczęściej mniejszym) argumentem. W praktyce takie podejście jest szeroko wykorzystywane przy rozwiązywaniu problemów, które mają powtarzającą się strukturę, np. obliczanie silni, przeszukiwanie struktur drzewiastych czy rozwiązywanie problemów typu „dziel i zwyciężaj”. Co ciekawe, rekurencja jest bardzo elegancka i pozwala pisać bardzo zwięzły kod, ale trzeba uważać na warunek stopu, żeby funkcja się nie zapętliła (tutaj to jest przypadek n=0). Sam spotkałem się już z sytuacjami, gdzie bez rekurencji rozwiązanie byłoby dużo trudniejsze do napisania, np. przy sortowaniu szybkim (quicksort) czy wyszukiwaniu binarnym w drzewie BST. Według standardów branżowych (np. Clean Code czy wzorce projektowe), rekurencji warto używać tam, gdzie naturalnie odwzorowuje strukturę problemu. Z mojego doświadczenia wynika, że początkujący czasem boją się rekurencji, ale kiedy już ją „załapią”, bardzo często wracają do niej w bardziej złożonych zadaniach. Ta funkcja to bardzo fajny wzorzec do nauki!
🤖 Wyjaśnienie generowane przez AI – weryfikuj w oficjalnych źródłach.