Salve ragazzi ho alcune funzioni che hanno codice
corretto però non riesco io a capire come vengono eseguite. Mi spiego meglio: ad esempio nella funzione SOMMA quando cerco di fare con carta e penna le istruzioni passo-passo non mi trovo con il TOT. Credo sia dovuto al fatto che non mi è tanto chiara la ricorsione oppure i record di attivazione. Mi potete spiegare come funziona il codice di queste procedure che vi elenco? Grazie a tutti!
int somma(tipoalbero alb) {
int s=0;
int d=0;
int tot=0;
if (alb==NULL){
printf ("");
return tot;
}
else {
s=s+somma(alb->sin);
d=d+somma(alb->des);
}
tot=s+d+alb->info;
return tot;
}
int max(tipoalbero albero) {
int massimo = albero->info;
int m=0;
if (albero->sin) {
m = max(albero->sin);
if (m>massimo)
massimo=m;
}
if (albero->des) {
m = max(albero->des);
if (m>massimo)
massimo=m;
}
return massimo;
}
int min (tipoalbero albero) {
int minimo=albero->info;
int m=0;
if (albero->sin) {
m = min(albero->sin);
if (m<minimo)
minimo=m;
}
return minimo;
}
void dealloca_albero(tipoalbero *palb) {
if( (*palb)!=NULL ) {
dealloca_albero(&(*palb)->sin);
dealloca_albero(&(*palb)->des);
}
free(*palb);
*palb=NULL;
return;
}