[ explorer-1 @ 02.12.2006. 19:15 ] @
Code:

mergesort(int a[], int low, int high){
    int mid;
        if(low<high){
        mid=(low+high)/2;        
        mergesort(a,low,mid);
        mergesort(a,mid+1,high);
        merge(a,low,high,mid);
    }
    return(0);
}


Primjerice imam ovu rekurzivnu funkciju. Kako se ona izvodi ?
Što se dogodi dok se dođe do prvog poziva rekurzije ?
Program dolazi do:
mergesort(int a[], int low, int high){
int mid;
if(low<high){
mid=(low+high)/2;
mergesort(a,low,mid);

i što sad dalje ?
[ al0cunit @ 02.12.2006. 19:24 ] @
pa .. mergesort ako je low manje od high trazi polovinu od low+high to ti je valjda jasno .. pa onda se poziva ponovo ali ovaj put sa mid kao treca promenjliva pa onda dalje povecava mid za 1 i stavlja je kao drugu varijablu a high stavlja kao trecu .. i tako .. i onda zove funkciju merge() i to je to .. ne znam sta te interesuje .. sasvim je ocito sta radi ova funkcija ..
[ explorer-1 @ 02.12.2006. 20:10 ] @
Ne, općenito me zanima što se događa kada se pozove funkcija.
Dal se onda stane i tu vrti, ili se pozove funkcija (rekurzivna) koja se onda izvodi neovisno o prvoj, pa se nakon toga pozove druga, pa treća,
ili se prvo poziva prva, pa dok je ona gotova ,onda se ide u drugu i na kraju u treću ( ili se izvode "paralelno" ) ?
[ yooyo @ 04.12.2006. 11:52 ] @
Nema tu nista o paralelizmu... par printf poziva na pravom mestu i kasnije proucavanje izlaza ce ti dati odgovor kako rekurzija radi.