Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [C]Ricerca min e max

  1. #1

    [C]Ricerca min e max

    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

    codice:
    #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;
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Forse perche' manca

    codice:
    if(inf==sup)
    {
      *min=vett[inf];
      *max=vett[sup];
      return;
    }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    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?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    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.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    ah, cavolo, già. Non c'era un punto in cui terminava, infatti mi dava segment fault.Ok, ho capito, grazie mille.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.