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:

  1. private static void print(int n) {
  2.     int i = 1, broj = 1;
  3.     while(i<n) {
  4.     System.out.println(broj);
  5.    i++;
  6.    broj = broj *10 + i;
  7.     }   
  8.    while(i>0) {
  9.     System.out.println(broj);
  10.    i--;
  11.    broj = (broj -i) / 10;
  12.     }   
  13. }
  14.  
  15. public static void main(String[] args) {
  16.    print(4);
  17. }


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: 14825
  • Gde živiš: Niš

Napisano: 16 Nov 2014 21:29

Evo jednog rešenja:

  1. private static int k = 1;
  2.    
  3. private static void print(int n)
  4. {
  5.    String s = k + "";
  6.    if(s.length()<n)
  7.    {
  8.       System.out.println(s);
  9.       k = k*10 + (k%10+1);
  10.       print(n);
  11.    }
  12.    System.out.println(s);
  13. }
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:
  1. private static void print(int n, int k)
  2. {
  3.    if((k + "").length() < n)
  4.    {
  5.       System.out.println(k);
  6.       k = k*10 + (k%10+1);
  7.       print(n, k);
  8.       System.out.println(k/10);
  9.    }
  10.    else
  11.       System.out.println(k);
  12. }
  13.    
  14. private static void print(int n)
  15. {
  16.    print(n, 1);
  17. }



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: 14825
  • 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 740 korisnika na forumu :: 19 registrovanih, 0 sakrivenih i 721 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., Asparagus, babaroga, bigvlada, BodinS, bojan313, comi, Darth Malak, esx66, Feller, jarovitt, Jozo74, laurusri, mir, nuki1234, prekodrinski, Szigetwar, Trpe Grozni, Đurđevdan