Strona główna › Pytania INF.04 › Pytanie 126
INF.04 · pytanie #126
Który fragment kodu ilustruje zastosowanie rekurencji? <br><br> <table><tr><td>Blok 1: int fn(int a) { if(a==1) return 1; return fn(a-1)+2; }</td><td>Blok 2: int fn(int a) { if(a==1) return 1; return (a-1)+2; }</td></tr><tr><td>Blok 3: int fn(int a) { if(a==1) return 1; return fun(a-1)+2; }</td><td>Blok 4: int fn(int a) { if(a==1) return 1; return 2; }</td></tr></table>
- ABlok 4
- BBlok 3
- CBlok 1
- DBlok 2
Poprawna odpowiedź: C. Blok 1
Kliknij odpowiedź, którą uważasz za poprawną.
Wyjaśnienie
Blok 1 to typowy przykład rekurencji, czyli sytuacji, gdy funkcja wywołuje samą siebie z innym argumentem (tutaj fn(a-1)). Takie podejście pojawia się w programowaniu bardzo często, szczególnie przy rozwiązywaniu problemów, gdzie rozwiązanie można rozbić na mniejsze, podobne zadania. W Bloku 1 mamy tzw. przypadek bazowy (if(a==1) return 1), czyli moment, w którym dalsza rekurencja się zatrzymuje – bez tego każdy program rekurencyjny skończyłby się przepełnieniem stosu i błędem. Moim zdaniem, dobrze rozumiana rekurencja to jedna z podstaw algorytmiki – spotyka się ją choćby przy obliczaniu silni, ciągu Fibonacciego czy w algorytmach przeszukiwania struktur drzewiastych, np. w operacjach na drzewach binarnych. W praktyce branżowej warto wiedzieć, że rekurencja bywa bardzo elegancka i skraca kod, ale trzeba ją stosować z głową – łatwo przekroczyć limity stosu przy zbyt głębokim wywołaniu albo zapomnieć o przypadku bazowym, przez co program nie kończy działania. W standardach wielu języków (np. C, Java) rekurencja jest narzędziem jak każde inne, ale zawsze powinna być projektowana z myślą o czytelności i efektywności rozwiązania. Często spotykam się z sytuacją, gdzie początkujący próbują wszystko rozwiązywać rekurencyjnie, a to nie zawsze jest optymalne – niektóre problemy lepiej rozwiązać iteracyjnie, choćby ze względu na wydajność. W tym konkretnym kodzie zastosowanie rekurencji jest klasyczne i poprawne, więc zdecydowanie jest to dobry wzór do nauki.
🤖 Wyjaśnienie generowane przez AI – weryfikuj w oficjalnych źródłach.