Źródło: Arkusze CKE
Jaką wartość zwróci poniższa funkcja dla argumentu n = 5?
function silnia(n) {
if (n <= 1) return 1;
return n * silnia(n - 1);
}
Warianty odpowiedzi
-
A
24
-
B
120
-
C
5
-
D
60
Wyjaśnienie
Mamy tu klasyczny przykład rekurencji, czyli funkcji, która wywołuje samą siebie, dopóki nie osiągnie warunku brzegowego.
Warunkiem stopu jest n mniejsze bądź równe 1, kiedy funkcja bez dalszych wywołań po prostu zwraca 1.
Dla argumentu 5 funkcja rozbija problem na kolejne kroki: 5 * silnia(4), potem 4 * silnia(3) i tak dalej, aż dojdzie do silni z 1.
Gdy pętla wywołań dotrze do końca, następuje zwijanie wyników: 5 * 4 * 3 * 2 * 1. Ostateczny wynik tego mnożenia to 120.