03.06.2013 | 17:53
Vjerojatno ne baš tako kako si napisao, nego kad naiđeš na crni piksel, onda se širiš oko njega dok ne naiđeš na sve bijele i onda je to jedan objekt.
Treba ti polje (dvodimenzionalno) u koje ćeš bilježiti piksele koji su prekontrolirani (da ne bi dvaput prebrojao isti objekt). Kreneš redom s neke strane (dvije for petlje, jedna za redove, druga za stupce), svaki bijeli piksel na koji naiđeš markiraš kao prekontroliran, a svaki koji je već markiran preskačeš. Kad naiđeš na crno, pozoveš funkciju, s koordinatama piksela i argumentom n=0 (prvi ulaz).
U toj funkciji onda
- piksel markiraš kao provjeren
- ako je n=0 od tog piksela ideš na svih 8 strana i svaki put pozoveš istu funkciju (rekurzivno) s koordinatama novog piksela, a n=1 do 8 (označava smjer u kojem si krenuo)
- ako je n>0 onda provjeriš da li je crno najprije. Ako je onda opet redom ideš na 7 strana (sve osim one odakle si došao) rekurzivno
- ako nije crno, onda (ako je n=0 povećaj brojač objekata (globalna varijabla)) i završi funkciju
Dakle, rekurzivna funkcija uvijek završava kad naiđe na bijelo, ali brojač objekata poveća samo kad se odpetlja natrag do nulte razine
I to ti je to.