Ilość wystąpień znaku w tablicy

0

Chcę zrobić wyszukiwanie rekurencyjne i zwiększanie licznika znaku, jednak mam coś źle.


#include <iostream>
#include <string>

using namespace std;

char napis[4]= {'j','a','n','\0'};
char c='j';

int sprawdz(int i, int licznik)
{
    if(napis[i]==0) return licznik;
    if(napis[i]==c) return sprawdz(i++,licznik++);
    else return sprawdz(i++,licznik);
}

int main(void)
{
    cout<<sprawdz(0,0);

    return 0;
}


0

Zdziwiłem się ze to nie działa, poszukałem co może być nie tak i to jest poprawne:

#include <iostream>
#include <string>

using namespace std;

char napis[3] = { 'j','j','n' };
char c = 'j';

int sprawdz(int i)
{
	if (i == 3) return 0;
	else if (napis[i] == 'j') return 1 + sprawdz(++i);
	else return sprawdz(++i);
}

int main(void)
{
	cout << sprawdz(0);

	return 0;
}

To wyglądało tak jak by ten kod nie działa przez to że stosowałeś postinkrementację.

0

Dziękuje :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1