Maior Elemento em um Array Usando Recursão

CBeginner
Pratique Agora

Introdução

Este laboratório irá guiá-lo através do processo de encontrar o maior elemento em um array usando recursão. O programa C solicitará ao usuário que insira o tamanho do array, em seguida, os elementos do array, seguido pela saída do maior elemento do array.

Configurando o Arquivo

Primeiramente, crie um novo arquivo chamado main.c no diretório ~/project/. Em seguida, copie o código abaixo e cole-o em seu arquivo, que contém todo o código que precisamos para completar este laboratório.

#include<stdio.h>

#define MAX 100

int getMaxElement(int []);  // recebe um array de int como parâmetro
int size;

int main()
{
    printf("\n\n\t\tLabEx - Best place to learn\n\n\n");
    int arr[MAX], max, i;
    printf("\n\nEnter the size of the array: ");
    scanf("%d", &size);
    printf("\n\nEnter %d elements\n\n", size);

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

    max = getMaxElement(arr);   // passando o array completo como parâmetro
    printf("\n\nLargest element of the array is %d\n\n", max);
    printf("\n\n\t\t\tCoding is Fun !\n\n\n");
    return 0;
}

int getMaxElement(int a[])
{
    static int i = 0, max =- 9999;  // static int max=a[0] is invalid
    if(i < size)   // till the last element
    {
        if(max < a[i])
        max = a[i];

        i++;    // to check the next element in the next iteration
        getMaxElement(a);   // recursive call
    }
    return max;
}

Entendendo o Código

Este programa C consiste em duas funções: main() e getMaxElement().

2.1 Função main()
  • Declara um array chamado arr para armazenar os elementos do array e inicializa variáveis: max para armazenar o maior elemento do array, e i para manter a iteração da função.
  • Solicita ao usuário que insira o tamanho do array.
  • Solicita ao usuário que insira os elementos do array.
  • Chama a função getMaxElement() e passa o array chamado arr como seu parâmetro.
  • Exibe o maior elemento do array armazenado na variável max.
2.2 Função getMaxElement()

Esta é uma função recursiva que retorna o maior elemento do array.

  • Declara um valor estático i para manter a iteração da função e o inicializa com 0, e um valor estático max para armazenar o maior elemento do array e o inicializa com um valor muito pequeno -9999.
  • Verifica se o valor de i é menor que o tamanho do array.
  • Se o valor do elemento i do array for maior que o valor atual de max, então o valor de max é atualizado com o elemento i do array.
  • Define i para o próximo elemento e chama a função getMaxElement(), tornando esta função recursiva.

Testando o Programa

Para compilar e executar o código, abra um terminal no diretório ~/project/ e siga os passos abaixo:

  • Digite gcc main.c para compilar o código.
  • Digite ./a.out para executar o programa.
  • No prompt, insira o tamanho do array e pressione ENTER.
  • Insira os elementos do array e pressione ENTER após cada um.
  • O programa exibirá o maior elemento do array.

Código Completo

#include<stdio.h>

#define MAX 100

int getMaxElement(int []);  // recebe um array de int como parâmetro
int size;

int main()
{
    printf("\n\n\t\tLabEx - O melhor lugar para aprender\n\n\n");
    int arr[MAX], max, i;
    printf("\n\nInsira o tamanho do array: ");
    scanf("%d", &size);
    printf("\n\nInsira %d elementos\n\n", size);

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

    max = getMaxElement(arr);   // passando o array completo como parâmetro
    printf("\n\nO maior elemento do array é %d\n\n", max);
    printf("\n\n\t\t\tProgramar é Divertido!\n\n\n");
    return 0;
}

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

        i++;    // para verificar o próximo elemento na próxima iteração
        getMaxElement(a);   // chamada recursiva
    }
    return max;
}

Resumo

Ótimo trabalho! Você concluiu com sucesso este laboratório sobre como encontrar o maior elemento em um array usando recursão. Agora você deve ter uma boa compreensão de como usar a recursão para encontrar o maior elemento de um array. Parabéns!