Funkcja jest rekurencyjna, gdy w trakcie działania wywołuje samą siebie (bezpośrednio albo przez inny zestaw wywołań). Kluczowe są dwa elementy:
- wywołanie rekurencyjne (np. obliczenie F(n) przez odwołanie do F(n-1) i F(n-2)),
- przypadek bazowy, czyli warunek zatrzymania (np. dla małych n zwracana jest wartość bez kolejnych wywołań), aby uniknąć nieskończonej pętli wywołań.
W kontekście liczb Fibonacciego rekurencja jest naturalna, bo definicja matematyczna opisuje kolejne wyrazy przez wcześniejsze. Jeżeli pokazana funkcja "generująca liczby Fibonacciego" korzysta z takiej definicji i w środku wywołuje samą siebie dla mniejszych argumentów, to klasyfikujemy ją jako rekurencyjną.
Dlaczego pozostałe odpowiedzi nie pasują?
- "wirtualnej" dotyczy mechanizmu polimorfizmu w programowaniu obiektowym (metody wirtualne są wybierane dynamicznie). To cecha związana z dziedziczeniem i wywołaniem metod, a nie z samowywołaniem funkcji.
- "o zmiennej liczbie argumentów" (wariadycznej) oznacza, że funkcja może przyjmować różną liczbę parametrów (np. formatowanie tekstu). Funkcja Fibonacciego standardowo przyjmuje stałą liczbę argumentów (najczęściej jeden: n).
- "niezwracającej wartości liczbowych" sugeruje brak zwracanej liczby (np. typ void). Funkcje obliczające element ciągu zwykle zwracają liczbę; nawet jeśli "generują" kolejne wartości, to typowo albo zwracają liczbę, albo przekazują ją w inny sposób. Sama rekurencja nie zależy od typu zwracanego.
Wskazówka egzaminacyjna: aby rozpoznać rekurencję, szukaj w ciele funkcji jej własnej nazwy w wywołaniu oraz sprawdź, czy istnieje warunek stopu. To szybsze i pewniejsze niż sugerowanie się nazwą zadania ("Fibonacci"), bo ten sam problem można rozwiązać również iteracyjnie.