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; }