[C++] rekurencja, liczenie elementow w tablicy

agggnes
Użytkownik
Użytkownik
Posty: 87
Rejestracja: 21 gru 2011, o 21:27
Płeć: Kobieta
Podziękował: 18 razy

[C++] rekurencja, liczenie elementow w tablicy

Post autor: agggnes »

Mam takie zadanie:

Napisz program, który policzy ile dwójek jest wpisanych do tablicy jednowymiarowej po losowaniu (umiem losować) \(\displaystyle{ 50}\) liczb naturalnych od \(\displaystyle{ 0}\) do \(\displaystyle{ 10}\).

Wydaje mi się, ze ten program całkiem łatwo da się zrobić iteracyjnie:
Najpierw wylosować liczby a potem

Kod: Zaznacz cały

int j=0;
for (int i=0; i<=50; i++)
{
if (n==2) j++
}
cout<<j;
Czy można to zrobić jakoś rekurencyjnie?
Mógłby mi ktoś podpowiedzieć?
Awatar użytkownika
Mistrz
Użytkownik
Użytkownik
Posty: 637
Rejestracja: 10 sie 2009, o 09:56
Płeć: Mężczyzna
Lokalizacja: Bydgoszcz / Warszawa
Podziękował: 19 razy
Pomógł: 135 razy

[C++] rekurencja, liczenie elementow w tablicy

Post autor: Mistrz »

Można. Prawdziwa jest następująca zależność rekurencyjna:

\(\displaystyle{ S(k)=\begin{cases} 0 \hbox{, dla } k=0 \\ S(k-1) \hbox{, dla }k>0, A[k-1] \ne 2 \\ S(k-1)+1 \hbox{, dla }k>0, A[k-1] = 2 \end{cases}}\)

Wyjaśnienie: \(\displaystyle{ S(k)}\) mówi nam, ile jest dwójek w tablicy \(\displaystyle{ A[0..k-1]}\).
ODPOWIEDZ