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 <stdio.h>

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 <stdio.h>

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 <stdio.h>

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 <stdio.h>

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 <stdio.h>

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.

Posts Similares

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *