Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Method Recursion pitanje

[es] :: .NET :: Method Recursion pitanje

[ Pregleda: 209 | Odgovora: 1 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

netizenk
LA

Član broj: 40370
Poruke: 8
*.socal.res.rr.com.



Profil

icon Method Recursion pitanje28.03.2008. u 05:53

Code:

1    class Program
2    {
3      public void Count(int InVal)
4      {
5         if (InVal == 0)
6         return;
7         Count(InVal - 1); // Invoke this method again.
8         Console.WriteLine("{0} ", InVal);
9      }
10    static void Main()
11    {
12       Program pr = new Program();
13       pr.Count(3);
14     }
15  }


OK, ume li neko da mi objasni kako je moguce da ovaj mali console app kao output daje 1, 2, 3?

Evo sta mi nije jasno...

Kada se iz Main metoda pozove public void Count method sa int-om 3 kao parametrom, dolazi se do linije 7 posto je 3 vece od nule i odatle metod zove sam sebe pri cemu oduzima 1 od trenutne vrednosti InVal parametra.

Ovo se desi tri puta za redom kada InVal konacno postaje 0 i onda dolazimo do linije 6 i komande return; koja salje na kraj metoda. Kapiram da se onda kompajler vraca na liniju 7 jer je odatle pozvan metod poslednji put ali mi nije jasno kako je moguce da u tom trenutku InVal koji je do tada imao vrednost 0, odjednom dobija vrednost 1...

Hvala unapred...
28.03.2008. u 05:53 

mmix
Miljan Mitrovic
Software Architect
Pancevo, Srbija

Moderator
Član broj: 17944
Poruke: 1612
195.252.78.*



Profil

icon Re: Method Recursion pitanje28.03.2008. u 06:59
intVal je formalni parametar metoda i samim tim je lokalna varijabla koja pripada metodu, svaki put kad pozoves rekurzivno sledeci korak kreira se novi intValue koji vazi samo za taj poziv i prstaje da postoji kad se metod zavrsi. Tako da su intValue u koracima 3, 2 i 1 zapravo tri razlicite promenljive na steku.

▪ The word 'politics' is derived from the word 'poly', meaning 'many', and the word 'ticks', meaning 'blood sucking parasites' - Larry Hardiman
▪ If the good guy gets the girl, it's rated PG; if the bad guy gets the girl, it's rated R; and if everybody gets the girl, it's rated X
▪ Illegal aliens have always been a problem in the United States. Ask any Native American
28.03.2008. u 06:59 

[es] :: .NET :: Method Recursion pitanje

[ Pregleda: 209 | Odgovora: 1 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.