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.
Configurando el 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
arrpara almacenar los elementos del arreglo e inicializa las variables:maxpara almacenar el elemento más grande del arreglo, yipara 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 llamadoarrcomo 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
ipara mantener la iteración de la función e inicializa it a 0, y un valor estáticomaxpara almacenar el elemento más grande del arreglo e inicializa it a un valor muy pequeño-9999. - Verifica si el valor de
ies menor que el tamaño del arreglo. - Si el valor del
i-ésimo elemento del arreglo es mayor que el valor actual demax, entonces el valor demaxse actualiza con eli-ésimo elemento del arreglo. - Establece
ial siguiente elemento y llama a la funcióngetMaxElement(), 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.cpara compilar el código. - Escribe
./a.outpara ejecutar el programa. - En el prompt, ingresa el tamaño del arreglo y presiona
ENTER. - Ingresa los elementos del arreglo y presiona
ENTERdespué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!



