[ belindra @ 09.07.2008. 09:13 ] @
Imam neki zadatak koji mi je nejasan kada se radi sa rekurzijom...Da li mozda neko zna resenje?

Dat je string i treba izbrojati koliko puta se pojavljuje ja u string nizu, ali sve to raditi rekurzivno.Znaci samo je potrebna metoda ne ceo zadatak i ta metoda nije void nego int posto vraca int vrednost.
primer:
imamo string "javor"-ovde se pojavljuje samo jednom "ja", znaci vraca samo broj 1.

hvala....
[ zmau @ 09.07.2008. 09:55 ] @
Logika je ova :
jaCount("javor") = jaCount("avor") + (ako je "ja" = "ja" onda 1)
jaCount("avor") = jaCount("vor") + (ako je "av" = "ja" onda 1)
itd.
jaCount("r") = 0 definitivno, jer jednoslovna reč ne može da sadrži dvoslovnu

Znači, vrednost funkcije za traženu reč je vrednost iste te funkcije za istu tu reč, samo bez prvog slova, eventualno povećana za 1, ako se na samom početku tražene reči nalazi traženi string. Iz rekurzije iskačeš kada više nema smisla proveravati, tj kada si na osnovu dužine ulazne reči siguran da ona ne sadrži traženi string.

Aj sad probaj ovu priču da prevedeš na javu (ili bar pseudokod koji više liči na kod, nego ovaj moj), pa ako ne ide, pričamo dalje.
[ belindra @ 09.07.2008. 10:04 ] @
Bolje da pricamo dalje-ovo mi nije jasno.Ja sam nesto uradio ali...nije to to :)
[ _Abraxas @ 09.07.2008. 14:35 ] @
Evo ja napisah neku metodicu:
Code:

public int prebrojStringove(String rec, String trazenaRec)
    {
        if(rec.length() == 1)
        {
            return 0;
        }
        if(rec.substring(i, i+2).equals(trazenaRec))
        {
            return 1 + prebrojStringove(rec.substring(i+1), trazenaRec);
        }
        else
        {
            return 0 + prebrojStringove(rec.substring(i+1), trazenaRec);
        }
    }

Znaci, ukoliko nadje definisani string, doda 1 i ponovo pozove metodu. Ukoliko ne nadje trazeni string, vraca 0 i ponovo poziva tu metodu. Kada vrati 0 (kada vise nema smisla ispitivati), onda prestaje izvrsavanje rekurzije i sabiraju se brojevi (nule i jedinice) sa stacka i vraca se trazeni rezultat.
Potrebno je samo definisati integer promenljivu i u klasi u kojoj ti se nalazi konkretna metoda. Ukoliko bi definisali tu promenljivu u okviru metode, ona bi se stalno resetovala na inicijalizovanu vrednost.

Pozdrav. :)
[ belindra @ 09.07.2008. 15:05 ] @
Super.To je to....:))))