PDA

Visualizza la versione completa : [C]Ricerca min e max


darth fener
15-04-2009, 21:56
Devo fare la ricerca del minimo e del massimo in un array in modo ricorsivo.
Ho fatto questo programma, ma non mi funziona, si chiude la finestra della console e non mi fa vedere niente :dh: :dh: :dh: :dh:



#include <stdio.h>
#include <conio.h>

void minmax(int *vett,int inf,int sup,int *min,int *max);

int main(){
int min,max;
int vettore[10]={300,3,6,101,100,102,0,14,12,36};
minmax(vettore,0,9,&min,&max);
printf("MIN: %d, MAX: %d",min,max);
getch();
}

void minmax(int *vett,int inf,int sup,int *min,int *max){
int centro=0,min1,min2,max1,max2;
if(inf==sup){
*min=vett[inf];
*max=vett[sup];
}
centro=(inf+sup)/2;
minmax(vett,inf,centro,&min1,&max1);
minmax(vett,centro+1,sup,&min2,&max2);
if(min1<min2) *min=min1;
else *min=min2;
if(max1>max2) *max=max1;
else *max=max2;
}

oregon
15-04-2009, 22:54
Forse perche' manca



if(inf==sup)
{
*min=vett[inf];
*max=vett[sup];
return;
}

darth fener
15-04-2009, 22:58
Adesso funziona, ma mi puoi dire perch l'hai messo? Cio io non ne vedevo il motivo visto che era void, perch mettendolo il programma funziona?

oregon
15-04-2009, 23:06
Una funzione ricorsiva deve ritornare in base ad una determinata condizione PRIMA di essere richiamata al suo interno, altrimenti non terminera' mai e avrai un blocco o un errore di stack overflow.

darth fener
15-04-2009, 23:08
ah, cavolo, gi. Non c'era un punto in cui terminava, infatti mi dava segment fault.Ok, ho capito, grazie mille.
:ciauz:

Loading