Na aula de hoje vamos aprender como somar os elementos de um vetor com recursão. Já vimos que somar os elementos de um vetor com uma repetição é bastante simples, bastando percorrer todas as posições do vetor acumulando a soma dos seus valores. Somar os elementos de um vetor com recursão também é simples, desde que você tenha entendido corretamente como identificar o caso base para uma função recursiva.
Para identificar o caso base pense o seguinte. Qual o resultado do somatório dos elementos de um vetor vazio?
Zero certo?
Imagine que o usuário pode chamar sua função passando um vetor vazio. Dessa forma, se o tamanho do vetor for igual a zero, então retornamos zero.
Mas, se o tamanho for diferente de zero (estamos assumindo que nunca receberemos um tamanho negativo) então retornaremos a soma do elemento da posição tam – 1 (lembre-se que não existe a posição tam no vetor) mais a chamada recursiva passando como parâmetros o vetor e tam – 1. Perceba que em algum momento o tamanho será zero.
Na função main chamamos a função soma dentro de um printf para imprimir na tela o resultado da soma.
/* Aula 161: Faça uma função recursiva para calcular a soma de todos os valores de um vetor de inteiros. Escrito por Wagner Gaspar Março de 2021 */ int soma(int v[], int tam){ if(tam == 0) // caso base, vetor vazio return 0; else return v[tam - 1] + soma(v, tam - 1); // chamada recursiva } int main () { int vet[10] = {1,2,3,4,5,6,7,8,9,10}; printf("Soma: %d\n", soma(vet, 10)); return 0; }
caralho aaaaaaaaaaaaaaaaaaaaaaaa delicia
delicial