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: 14824
  • 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: 14824
  • 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 782 korisnika na forumu :: 14 registrovanih, 1 sakriven i 767 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: Boskovic, famoso, goran.vvv, Konda, Mićko, opt1, procesor, redstar72, Sančo, tooljan, vladaa012, zhuki8, zljubomir, zoran77