calcolo del massimo di un vettore in modo ricorsivo


Oggi vediamo come calcolare in modo ricorsivo il masismo di un vettore.

Il codice che useremo è il seguente:

#include<stdio.h>
#define MAX 100
int max(int vet[],int n);
int main(){
    int vet[MAX],n,i;
    do{
       printf("inserire il numero di elementi da inserire : ");
       scanf("%d",&n);
    }while(n<1||n>MAX);
    for(i=0;i<n;i++){
       printf("inserire l'elemento numero %d : ",i+1);
       scanf("%d",&vet[i]);
    }
    printf("%d\n",max(vet,n));
}

int max(int vet[],int n){
    int max_c;
    n--;
    if(n==0)
        return vet[0];
    max_c = max(vet,n);
    if(max_c>vet[n])
         return max_c;
    return vet[n];
}

In pratica nel main prelevo i dati in input e poi richiamo la funzione max passandogli come parametro il vettore ed il numero di elementi.
La funzione max per prima cosa, dopo aver inizializzato le variabili, decrementa n in modo che sia uguale all’indice dell’ultimo elemento.
In seguito controlla se n==0 cioè se c’è un solo elemento su cui fare il controllo; se è così ritorna il primo elemento; se non succede questa condizione continua calcolando il max di tutti gli elementi escluso l’ultimo, infatti ora passa il numero di elementi(n) decrementati in precedenza, infine controlla il massimo tra il massimo degli elementi precedenti e l’ultimo e lo restituisce.

N.B. se si volesse sapere il minimo degli elementi basterebbe cambiare > in < nell'ultimo if.

CC BY-SA 4.0 calcolo del massimo di un vettore in modo ricorsivo by cardinale claudio is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Lascia un commento