void Rekurzivna metoda

void Rekurzivna metoda

offline
  • Niko E
  • Software & Information Engineering
  • Pridružio: 05 Maj 2009
  • Poruke: 135
  • Gde živiš: Wien

Novi Java školski primer Smile Zadatak: za unešeni broj odštampati ovako nešto:
npr: print(4)
1
12
123
1234
123
12
1
Ali preko rekurzivne metode. Ja sam uradio obično, i izgleda ovako:
    private static void print(int n) {         int i = 1, broj = 1;         while(i<n) {         System.out.println(broj);    i++;    broj = broj *10 + i;         }       while(i>0) {         System.out.println(broj);    i--;    broj = (broj -i) / 10;         }        }     public static void main(String[] args) {    print(4);     }

Hvala unapred.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14596
  • Gde živiš: Niš

Napisano: 16 Nov 2014 21:29

Evo jednog rešenja: private static int k = 1;     private static void print(int n) {    String s = k + "";    if(s.length()<n)    {       System.out.println(s);       k = k*10 + (k%10+1);       print(n);    }    System.out.println(s); }Verovatno postoji mnogo jednostavnije i optimalnije rešenje, ali je ovo ono što mi je prvo palo na pamet. Smile

Dopuna: 16 Nov 2014 21:56

Evo još jednog rešenja gde se ne koristi statička promenljiva: private static void print(int n, int k) {    if((k + "").length() < n)    {       System.out.println(k);       k = k*10 + (k%10+1);       print(n, k);       System.out.println(k/10);    }    else       System.out.println(k); }     private static void print(int n) {    print(n, 1); }



offline
  • Niko E
  • Software & Information Engineering
  • Pridružio: 05 Maj 2009
  • Poruke: 135
  • Gde živiš: Wien

Hvala, prvi primer mi više odgovara jer ne smem da menjam parametre metode.

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14596
  • Gde živiš: Niš

Nigde nisi menjao parametre f-je, samo si unutar jedne funkcije pozivao drugu funkciju. Tako nešto je sasvim normalno. Wink

Ko je trenutno na forumu
 

Ukupno su 730 korisnika na forumu :: 42 registrovanih, 4 sakrivenih i 684 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., ALBION101, banebeograd, Bogoslov, Botovac, Cirkon, crnitrn, djboj, DM1994, HrcAk47, ILGromovnik, Ixer, Jovan Nenad, Klecaviks, Koca Popovic, krkalon, KUZMAR, kybonacci, laze2, Marko Marković, mercedesamg, Mercury, mikrimaus, Milos ZA, milos7160, Mr. Majevica, mrav pesadinac, nikoladim, nuke92, panonski mornar, Panter, repac, Snorks, sokars, suton, tmanda323, Trpe Grozni, uruk, vlvl, voja64, W123, Wisdomseeker