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
arrpara armazenar os elementos do array e inicializa variáveis:maxpara armazenar o maior elemento do array, eipara 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 chamadoarrcomo 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
ipara manter a iteração da função e o inicializa com 0, e um valor estáticomaxpara 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
ido array for maior que o valor atual demax, então o valor demaxé atualizado com o elementoido array. - Define
ipara o próximo elemento e chama a funçãogetMaxElement(), 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.cpara compilar o código. - Digite
./a.outpara executar o programa. - No prompt, insira o tamanho do array e pressione
ENTER. - Insira os elementos do array e pressione
ENTERapó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!



