aula 162

Como descobrir o maior elemento de um vetor com recursão?

Nesta aula veremos como descobrir o maior elemento de um vetor com recursão. Como já vimos ao longo do nosso curso de programação C, encontrar o maior elemento de um vetor de forma iterativa é bem simples, bastando uma estrutura de repetição e uma variável para receber o maior elemento enquanto percorremos as posições do vetor.

Encontrar o maior elemento de um vetor com recursão usa uma ideia semelhante. Precisamos de uma variável para armazenar o índice do maior elemento. Contudo, a repetição é alcançada por meio de chamadas recursivas.

Nossa função precisa de três parâmetros: o vetor; o tamanho do vetor; e o índice do maior elemento, que inicialmente é zero.

Quando tamanho for zero, significa que percorrermos todo o vetor. Este é nosso caso base (nosso ponto de parada).

Por outro lado, enquanto tamanho for diferente de zero, vamos comparar o elemento da posição tamanho – 1 com o elemento da posição índice (índice do maior elemento). É baseado nesta comparação que decidimos qual o índice que será passado para nossa chamada recursiva.

Não esquece de decrementar um de tamanho ao fazer a chamada recursiva, caso contrário teremos um loop infinito, pois tamanho nunca chegará a zero.

Código em C para descobrir o maior elemento de um vetor com recursão

#include <stdio.h>
#include <stdlib.h>

/*
        Aula 162: Desenvolva uma função recursivo que encontre e retorne o maior elemento de um vetor de inteiros de tamanho N.

        Escrito por Wagner Gaspar
        Março de 2021
*/

int maior(int v[], int tam, int indice){
    if(tam == 0)
        return v[indice]; // maior elemento
    else{
        if(v[tam - 1] > v[indice]) // compara dois elementos para descobrir qual é o maior
            return maior(v, tam - 1, tam - 1);
        else
            return maior(v, tam - 1, indice);
    }
}

int main () {

    int vet[10] = {11,258,13,445,58,67,700,8,9,10};

    printf("Maior: %d\n", maior(vet, 10, 0));

    return 0;
}

Deixe um comentário

onze + 1 =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.