Rekurzija liči na piramidu, građenje kula na kuli, stavljanje kutija u kutije itd. Zavisno od mesta u funkciji na kome se dešava rekurzija, pre ili kasnije će se doći do zadnjeg rekurzivnog poziva (kao da se penješ na piramidu po pravoj liniji) a onda počinje lagano spuštanje (došao si do vrha i nastavljaš pravo, spuštajući se). Prvo će se završiti poslednji poziv funkcije, a prvi tek na kraju po završetku svih ostalih (poslednji stepenik je poslednji na koga si kročio ali prvi ispod čije visine je stalo tvoje stopalo prilikom spuštanja; prvi stepenik je prvi na koga si kročio, ali poslednji ispod čije visine je stalo tvoje stopalo prilikom spuštanja).
Ja ću koracima algoritma koje si naveo dodati i prethodni da bih mogao opisati ponašanje algoritma.
1. provera da li se došlo do kraja niza. (
if(i>= n - 1) )
2. traženje indeksa maksimalnog broja na pozicijama iza
i
3. ako je broj sa indeksom
i veci od pretho nađenog, vrati
i
4. u supritnom vrati taj prethodno nađeni broj
Npr. kod niza 45,96,-1,7569,7134 bi to izgledalo ovako (indeksi iste dubine pripadaju istom pozivu):
1. index(i(=0),n(=5)) - tvoj poziv
1.1. traženje indeksa maksimalnog broja na pozicijama iza 0; to jest index(i(=1),n(=5))
1.1.1 traženje indeksa maksimalnog broja na pozicijama iza 1; to jest index(i(=2),n(=5))
1.1.1.1 traženje indeksa maksimalnog broja na pozicijama iza 2; to jest index(i(=3),n(=5))
1.1.1.1.1 traženje indeksa maksimalnog broja na pozicijama iza 3; to jest index(i(=4),n(=5))
1.1.1.1.2 pošto je ovde i>=n-1 vraca se n-1, tj. 4
1.1.1.2 tmax dobija prethodno vraćenu vrednost 4
1.1.1.3 polje[i(=3)] > polje[tmax(=4)] je true, vraca se i(=3)
1.1.2 tmax dobija prethodno vraćenu vrednost 3
1.1.3 polje[i(=2)] > polje[tmax(=3)] je false, ništa se ne dešava
1.1.4 vraća se tmax(=3)
1.2 tmax dobija prethodno vraćenu vrednost 3
1.3 polje[i(=1)] > polje[tmax(=3)] je false, ništa se ne dešava
1.4 vraća se tmax(=3)
2. tmax dobja prethodno vraćenu vrednost 3
3. polje[i(=0)] > polje[tmax(=3)] je false, nista se ne desava
4. vraca se tmax(=3)
I stvarno, najveci broj niza (7569) ima indeks 3. Ovde je prikazano pet poziva iste funkcije. Višestruko dodeljivanje vrednosti
tmax i
i ne stvara pometnju jer svaki od pet poziva poseduje svoje sopstvene.
[Ovu poruku je menjao Mali Misha dana 29.08.2006. u 00:05 GMT+1]
Ipak se ++uje.