• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Liczenie w tablicy, rekurencja

0 głosów
1,209 wizyt
pytanie zadane 12 marca 2020 w C i C++ przez Programmingc100 Bywalec (2,620 p.)

Witam, napisałem program który liczby wystąpienie podanej liczby w tablicy z tym że chcę to zrobić rekurencyjnie

int wyszukaj(int tab[],int a,int n,int count)
{

     printf("n: %d \n",n);
     printf("a: %d \n",a);
   if(n==0)
   {
       return count;
   }
   printf("tab: %d\n",tab[n]);
   printf("count: %d\n",count);
   if(tab[n]==a)
   {

    count++;
    wyszukaj(tab,a,n-1,count);

   }
   else
   {
     wyszukaj(tab,a,n-1,count);
   }

}

I nie wiem czy to już można nazwać że jest to zrobione rekurencyjnie czy nie?

1
komentarz 13 marca 2020 przez mokrowski Mędrzec (158,960 p.)
Przewidujesz że liczba może wystąpić w tablicy "-3" razy (minus trzy razy)?

A czy n także będzie ujemne?

Jeśli bez względu na to czy  tab[n] == a, zawsze wykonujesz wyszukaj(tab,a,n-1,count), to warto to powtarzać?

A co będzie w przypadku gdy wartość występuje na 1 polu (czyli indeksie 0) tablicy? To wystąpienie zostanie policzone?
komentarz 14 marca 2020 przez Programmingc100 Bywalec (2,620 p.)
Czyli potrzebne tutaj będzie jakieś zabezpieczenie przed liczbami ujemnymi ?
komentarz 14 marca 2020 przez Programmingc100 Bywalec (2,620 p.)
if(n==-1)
   {
       return count;
   }

To na pewno trzeba zmienić

komentarz 14 marca 2020 przez Programmingc100 Bywalec (2,620 p.)
int wyszukaj(int tab[],int a,int n,int count)
{

   if(n==-1)
   {
       return count;
   }
   if(tab[n]==a)
    count++;

    wyszukaj(tab,a,n-1,count);


}

Teraz wywołanie rekurencyjne się nie powtarza

1
komentarz 14 marca 2020 przez mokrowski Mędrzec (158,960 p.)
size_t count(const int table[], const int value, size_t size, size_t counter)
{
    if (table[--size] == value)
    {
        ++counter;
    }
    return size == 0 ? counter: count(table, value, size, counter);
}

 

komentarz 15 marca 2020 przez Programmingc100 Bywalec (2,620 p.)
Dziękuje, a mój poprawiony program się nie nadaje?
1
komentarz 15 marca 2020 przez mokrowski Mędrzec (158,960 p.)
A z jakiego powodu n ma wartość ujemną? Zerknij jeszcze raz na uwagi które podałem.

1 odpowiedź

+2 głosów
odpowiedź 12 marca 2020 przez SimiVoid Pasjonat (19,790 p.)
wybrane 13 lipca 2020 przez Programmingc100
 
Najlepsza
Tak, ponieważ w najprostszy sposób rekurencja jest to  odwoływanie się funkcji do samej siebie.

Podobne pytania

0 głosów
1 odpowiedź 2,163 wizyt
pytanie zadane 19 marca 2017 w C i C++ przez AndekQR Użytkownik (880 p.)
0 głosów
1 odpowiedź 1,960 wizyt
pytanie zadane 29 października 2016 w C i C++ przez mistrzuniu1 Użytkownik (600 p.)
0 głosów
2 odpowiedzi 1,512 wizyt
pytanie zadane 2 października 2020 w C i C++ przez madbull Początkujący (270 p.)

93,742 zapytań

142,678 odpowiedzi

323,297 komentarzy

63,326 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...