[ 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.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.