Przejdź do głównej treści
  1. Strona główna
  2. Technik informatyk
  3. EE8
  4. Pytanie

Kwalifikacja: EE8 - Kwalifikacja EE8

Zawód: Technik informatyk

Kategorie: Programowanie

W języku C/C++ po wywołaniu funkcji cout << s(4) uzyskano wynik liczbowy

  int s (int n) {if (n>1) return n*s(n-1); else return 1;}  


Odpowiedź 24 jest jak najbardziej poprawna. Funkcja s(n) liczy silnię liczby n, co znaczy, że zwraca iloczyn wszystkich liczb całkowitych od 1 do n. Dla s(4) wszystko zaczyna się od tego, że sprawdza, czy n (czyli 4) jest większe niż 1. I faktycznie jest! Więc potem wywołuje s(3). Tak to się kręci, aż dojdziemy do 1 – wtedy funkcja zwraca 1. Potem następuje mnożenie: 4 * s(3), a s(3) to 3 * s(2), i tak dalej. Na końcu dostajemy 4 * 3 * 2 * 1, co daje 24. Zrozumienie tego wszystkiego jest mega ważne, bo rekurencja to jedna z podstaw programowania w C/C++. Silnia przydaje się wszędzie – w statystyce, informatyce, a nawet w kombinatoryce, gdzie obliczamy permutacje i kombinacje.
Wybór innych opcji, jak 4, 1 czy 120, może wynikać z typowych pomyłek w myśleniu o funkcjach rekurencyjnych. Odpowiedź 4 można pomylić z prostym wywołaniem funkcji bez zrozumienia, że to rekurencja. Właściwie to nie uwzględnia tego, że s(n) robi wiele mnożeń, a nie zwraca n tylko raz. Z kolei 1 może być wynikiem fałszywego przekonania, że funkcja zawsze zwraca 1, a to nie jest zgodne z jej definicją. A 120 pewnie wzięło się z pomyłki w obliczeniu silni dla n=5, co zdarza się często, gdy ktoś nie zrozumie, jak to działa. Ważne, żeby pamiętać, że funkcje rekurencyjne są złożone i nie działają jak zwykłe, a silnia rośnie bardzo szybko – nawet niewielka zmiana w n prowadzi do dużych różnic w końcowym wyniku.

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. Wyślemy 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.