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

Liczenie w tablicy, rekurencja

Object Storage Arubacloud
0 głosów
598 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 (155,460 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 (155,460 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 (155,460 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ź 1,927 wizyt
pytanie zadane 19 marca 2017 w C i C++ przez AndekQR Użytkownik (880 p.)
0 głosów
1 odpowiedź 1,743 wizyt
pytanie zadane 29 października 2016 w C i C++ przez mistrzuniu1 Użytkownik (600 p.)
0 głosów
2 odpowiedzi 785 wizyt
pytanie zadane 2 października 2020 w C i C++ przez madbull Początkujący (270 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,959 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...