Desafios Práticos com Função Recursiva em C
A recursão é uma técnica utilizada na programação em que uma função chama a si mesma para resolver um problema. Embora pareça um conceito complexo no início, ela se torna muito intuitiva quando aplicada em situações como contagens, cálculos matemáticos e processamento de estruturas de dados.
Toda função recursiva possui dois elementos fundamentais: um caso base, responsável por interromper as chamadas recursivas, e uma chamada recursiva, que divide o problema em partes menores até chegar ao caso base.
Neste conteúdo, você irá praticar funções recursivas através de exemplos que envolvem potência, contagem regressiva, soma de números pares, soma dos dígitos de um número e soma dos elementos de um vetor.
QUESTÃO 1 – Cálculo da potência
Uma calculadora científica precisa calcular potências sem utilizar funções prontas da linguagem.
Crie uma função recursiva chamada potencia() que receba dois números inteiros: a base; o expoente.
A função deve calcular o resultado da potência utilizando apenas recursão.
Considere que qualquer número elevado a 0 é igual a 1.
Na função main(), utilize:
- Base: 2
- Expoente: 5
Exemplo:
Resultado: 32
Resposta:
#include
int potencia(int base, int expoente) {
if (expoente == 0) {
return 1;
}
return base * potencia(base, expoente - 1);
}
int main() {
int resultado = potencia(2, 5);
printf("Resultado: %d\n", resultado);
return 0;
}
QUESTÃO 2 – Contagem regressiva para o lançamento
Uma empresa aeroespacial está desenvolvendo um sistema para exibir a contagem regressiva antes do lançamento de um foguete.
Crie uma função recursiva chamada contagemRegressiva() que receba um número inteiro como argumento.
A função deve:
- exibir o número recebido;
- chamar a si mesma diminuindo 1 unidade;
- encerrar quando chegar a 0.
Ao chegar a 0, exiba a mensagem: Lancamento realizado!
Na função main(), chame a função iniciando a contagem em 10.
Exemplo:
10
9
8
7
6
5
4
3
2
1
0
Lancamento realizado!
Resposta:
#include
void contagemRegressiva(int numero) {
if(numero == 0) {
printf("0\n");
printf("Lancamento realizado!\n");
return;
}
printf("%d\n", numero);
contagemRegressiva(numero - 1);
}
int main() {
contagemRegressiva(10);
return 0;
}
QUESTÃO 3 – Somatório dos números pares
Crie uma função recursiva chamada somarPares() que receba um número inteiro positivo.
A função deve retornar a soma de todos os números pares entre 2 e o número informado.
Na main(), utilize: 10
Exemplo:
Soma dos pares: 30
(2 + 4 + 6 + 8 + 10)
Resposta:
#include
int somarPares(int numero) {
if (numero <= 0) {
return 0;
}
if (numero % 2 == 0) {
return numero + somarPares(numero - 2);
}
return somarPares(numero - 1);
}
int main() {
printf("Soma dos pares: %d\n", somarPares(10));
return 0;
}
QUESTÃO 4 – Soma dos dígitos de um número
Um sistema precisa calcular a soma dos dígitos de um código numérico.
Crie uma função recursiva chamada somarDigitos() que receba um número inteiro e retorne a soma de seus dígitos.
Na main(), utilize o número: 428
Exemplo:
Soma dos digitos: 14
Resposta:
#include
int somarDigitos(int numero) {
if (numero == 0) {
return 0;
}
return (numero % 10) + somarDigitos(numero / 10);
}
int main() {
int resultado = somarDigitos(428);
printf("Soma dos digitos: %d\n", resultado);
return 0;
}
QUESTÃO 5 – Soma dos elementos de um vetor
Crie uma função recursiva chamada somarVetor() que receba:
- um vetor de números inteiros;
- o tamanho do vetor.
A função deve retornar a soma de todos os elementos.
Utilize o vetor: 5 8 3 10 4
Exemplo:
Soma: 30
Resposta:
#include
int somarVetor(int vetor[], int tamanho) {
if (tamanho == 0) {
return 0;
}
return vetor[tamanho - 1] + somarVetor(vetor, tamanho - 1);
}
int main() {
int numeros[] = {5, 8, 3, 10, 4};
printf("Soma: %d\n", somarVetor(numeros, 5));
return 0;
}
Caso o C ainda não esteja instalado em seu dispositivo, clique no botão abaixo para realizar a instalação.





