Elemento más grande en un arreglo utilizando recursividad

CCBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Esta práctica te guiará por el proceso de encontrar el elemento más grande de una matriz utilizando recursividad. El programa en C pedirá al usuario que ingrese el tamaño de la matriz, luego ingresará los elementos de la matriz, seguido de la salida del elemento más grande de la matriz.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/FunctionsGroup(["Functions"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c(("C")) -.-> c/CompoundTypesGroup(["Compound Types"]) c/CompoundTypesGroup -.-> c/arrays("Arrays") c/FunctionsGroup -.-> c/function_parameters("Function Parameters") c/FunctionsGroup -.-> c/recursion("Recursion") c/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/arrays -.-> lab-123275{{"Elemento más grande en un arreglo utilizando recursividad"}} c/function_parameters -.-> lab-123275{{"Elemento más grande en un arreglo utilizando recursividad"}} c/recursion -.-> lab-123275{{"Elemento más grande en un arreglo utilizando recursividad"}} c/user_input -.-> lab-123275{{"Elemento más grande en un arreglo utilizando recursividad"}} c/output -.-> lab-123275{{"Elemento más grande en un arreglo utilizando recursividad"}} end

Configuración del archivo

Primero, crea un nuevo archivo llamado main.c en el directorio ~/project/. Luego, copia el código siguiente y péguelo en tu archivo, que contiene todo el código que necesitamos para completar esta práctica.

#include<stdio.h>

#define MAX 100

int getMaxElement(int []);  // toma un arreglo de enteros como parámetro
int size;

int main()
{
    printf("\n\n\t\tLabEx - Mejor lugar para aprender\n\n\n");
    int arr[MAX], max, i;
    printf("\n\nIngrese el tamaño del arreglo: ");
    scanf("%d", &size);
    printf("\n\nIngrese %d elementos\n\n", size);

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

    max = getMaxElement(arr);   // pasando el arreglo completo como parámetro
    printf("\n\nEl elemento más grande del arreglo es %d\n\n", max);
    printf("\n\n\t\t\tCodificar es divertido!\n\n\n");
    return 0;
}

int getMaxElement(int a[])
{
    static int i = 0, max =- 9999;  // static int max=a[0] es inválido
    if(i < size)   // hasta el último elemento
    {
        if(max < a[i])
        max = a[i];

        i++;    // para revisar el siguiente elemento en la siguiente iteración
        getMaxElement(a);   // llamada recursiva
    }
    return max;
}

Comprendiendo el código

Este programa en C consta de dos funciones: main() y getMaxElement().

2.1 Función main()
  • Declara un arreglo llamado arr para almacenar los elementos del arreglo e inicializa las variables: max para almacenar el elemento más grande del arreglo, y i para mantener la iteración de la función.
  • Pide al usuario que ingrese el tamaño del arreglo.
  • Pide al usuario que ingrese los elementos del arreglo.
  • Llama a la función getMaxElement() y pasa el arreglo llamado arr como parámetro.
  • Muestra el elemento más grande del arreglo almacenado en la variable max.
2.2 Función getMaxElement()

Esta es una función recursiva que devuelve el elemento más grande del arreglo

  • Declara un valor estático i para mantener la iteración de la función e inicializa it a 0, y un valor estático max para almacenar el elemento más grande del arreglo e inicializa it a un valor muy pequeño -9999.
  • Verifica si el valor de i es menor que el tamaño del arreglo.
  • Si el valor del i-ésimo elemento del arreglo es mayor que el valor actual de max, entonces el valor de max se actualiza con el i-ésimo elemento del arreglo.
  • Establece i al siguiente elemento y llama a la función getMaxElement(), haciendo que esta función sea recursiva.

Probando el programa

Para compilar y ejecutar el código, abre una terminal en el directorio ~/project/ y sigue los pasos siguientes:

  • Escribe gcc main.c para compilar el código.
  • Escribe ./a.out para ejecutar el programa.
  • En el prompt, ingresa el tamaño del arreglo y presiona ENTER.
  • Ingresa los elementos del arreglo y presiona ENTER después de cada uno.
  • El programa mostrará el elemento más grande del arreglo.

Código completo

#include<stdio.h>

#define MAX 100

int getMaxElement(int []);  // toma un arreglo de enteros como parámetro
int size;

int main()
{
    printf("\n\n\t\tLabEx - Mejor lugar para aprender\n\n\n");
    int arr[MAX], max, i;
    printf("\n\nIngrese el tamaño del arreglo: ");
    scanf("%d", &size);
    printf("\n\nIngrese %d elementos\n\n", size);

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

    max = getMaxElement(arr);   // pasando el arreglo completo como parámetro
    printf("\n\nEl elemento más grande del arreglo es %d\n\n", max);
    printf("\n\n\t\t\tCodificar es divertido!\n\n\n");
    return 0;
}

int getMaxElement(int a[])
{
    static int i = 0, max =- 9999;  // static int max=a[0] es inválido
    if(i < size)   // hasta el último elemento
    {
        if(max < a[i])
        max = a[i];

        i++;    // para revisar el siguiente elemento en la siguiente iteración
        getMaxElement(a);   // llamada recursiva
    }
    return max;
}

Resumen

¡Excelente trabajo! Has completado con éxito esta práctica sobre cómo encontrar el elemento más grande en un arreglo utilizando la recursividad. Ahora deberías tener una buena comprensión de cómo utilizar la recursividad para encontrar el elemento más grande de un arreglo. ¡Bien hecho!