Plus grand élément dans un tableau en utilisant la récursivité

CCBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous allez découvrir le processus de recherche de l'élément le plus grand dans un tableau en utilisant la récursivité. Le programme C demandera à l'utilisateur d'entrer la taille du tableau, puis de saisir les éléments du tableau, suivit de l'affichage de l'élément le plus grand du tableau.

Configuration du fichier

Tout d'abord, créez un nouveau fichier nommé main.c dans le répertoire ~/project/. Ensuite, copiez le code ci-dessous et collez-le dans votre fichier, qui contient tout le code dont nous avons besoin pour terminer ce laboratoire.

#include<stdio.h>

#define MAX 100

int getMaxElement(int []);  // prend un tableau d'entiers en paramètre
int size;

int main()
{
    printf("\n\n\t\tLabEx - Meilleur endroit pour apprendre\n\n\n");
    int arr[MAX], max, i;
    printf("\n\nEntrez la taille du tableau : ");
    scanf("%d", &size);
    printf("\n\nEntrez %d éléments\n\n", size);

    for(i = 0; i < size; i++)
    {
        scanf("%d", &arr[i]);
    }

    max = getMaxElement(arr);   // passer le tableau complet en paramètre
    printf("\n\nLe plus grand élément du tableau est %d\n\n", max);
    printf("\n\n\t\t\tCoder c'est amusant!\n\n\n");
    return 0;
}

int getMaxElement(int a[])
{
    static int i = 0, max =- 9999;  // static int max=a[0] est invalide
    if(i < size)   // jusqu'à la dernière élément
    {
        if(max < a[i])
        max = a[i];

        i++;    // pour vérifier l'élément suivant dans l'itération suivante
        getMaxElement(a);   // appel récursif
    }
    return max;
}

Comprendre le code

Ce programme C est composé de deux fonctions : main() et getMaxElement().

2.1 Fonction main()
  • Déclare un tableau nommé arr pour stocker les éléments du tableau et initialise les variables : max pour stocker l'élément le plus grand du tableau, et i pour maintenir l'itération de la fonction.
  • Demande à l'utilisateur d'entrer la taille du tableau.
  • Demande à l'utilisateur d'entrer les éléments du tableau.
  • Appelle la fonction getMaxElement() et passe le tableau nommé arr en tant que paramètre.
  • Affiche l'élément le plus grand du tableau stocké dans la variable max.
2.2 Fonction getMaxElement()

Il s'agit d'une fonction récursive qui renvoie l'élément le plus grand du tableau

  • Déclare une valeur statique i pour maintenir l'itération de la fonction et l'initialise à 0, et une valeur statique max pour stocker l'élément le plus grand du tableau et l'initialise à une valeur très petite -9999.
  • Vérifie si la valeur de i est inférieure à la taille du tableau.
  • Si la valeur de l'élément i-ème du tableau est supérieure à la valeur actuelle de max, alors la valeur de max est mise à jour avec l'élément i-ème du tableau.
  • Affecte i à l'élément suivant et appelle la fonction getMaxElement(), rendant cette fonction récursive.

Tester le programme

Pour compiler et exécuter le code, ouvrez un terminal dans le répertoire ~/project/ et suivez les étapes suivantes :

  • Tapez gcc main.c pour compiler le code.
  • Tapez ./a.out pour exécuter le programme.
  • Dans l'invite de commande, entrez la taille du tableau et appuyez sur ENTRÉE.
  • Entrez les éléments du tableau et appuyez sur ENTRÉE après chacun d'eux.
  • Le programme affichera l'élément le plus grand du tableau.

Code complet

#include<stdio.h>

#define MAX 100

int getMaxElement(int []);  // prend un tableau d'entiers en paramètre
int size;

int main()
{
    printf("\n\n\t\tLabEx - Meilleur endroit pour apprendre\n\n\n");
    int arr[MAX], max, i;
    printf("\n\nEntrez la taille du tableau : ");
    scanf("%d", &size);
    printf("\n\nEntrez %d éléments\n\n", size);

    for(i = 0; i < size; i++)
    {
        scanf("%d", &arr[i]);
    }

    max = getMaxElement(arr);   // passer le tableau complet en paramètre
    printf("\n\nLe plus grand élément du tableau est %d\n\n", max);
    printf("\n\n\t\t\tCoder c'est amusant!\n\n\n");
    return 0;
}

int getMaxElement(int a[])
{
    static int i = 0, max =- 9999;  // static int max=a[0] est invalide
    if(i < size)   // jusqu'à la dernière élément
    {
        if(max < a[i])
        max = a[i];

        i++;    // pour vérifier l'élément suivant dans l'itération suivante
        getMaxElement(a);   // appel récursif
    }
    return max;
}

Sommaire

Félicitations! Vous avez réussi à terminer ce laboratoire sur la façon de trouver l'élément le plus grand dans un tableau en utilisant la récursivité. Vous devriez maintenant bien comprendre comment utiliser la récursivité pour trouver l'élément le plus grand d'un tableau. Bravo!