0Pricing
C Academy · Aula

Problemas recursivos clássicos

Fatorial e Fibonacci.

Problemas recursivos clássicos é uma aula grátis de C Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C Academy inclui 4 aulas no total.

Problemas clássicos

Alguns problemas se adaptam naturalmente à recursão. Aprender os exemplos clássicos fornece padrões que você pode reutilizar.

Nesta lição, abordaremos fatorial, Fibonacci, soma dos dígitos, máximo divisor comum e inversão da saída.

Fatorial

O fatorial de n é n multiplicado pelo fatorial de n menos 1, sendo 1! igual a 1.

Este é o exemplo clássico de recursão: um caso-base claro e uma chamada recursiva.

#include <stdio.h>

long factorial(int n) {
    if (n <= 1) return 1;
    return n * factorial(n - 1);
}

int main(void) {
    printf("%ld\n", factorial(6));
    return 0;
}

Números de Fibonacci

Cada número de Fibonacci é a soma dos dois números anteriores. A definição recursiva precisa de dois casos-base: fib(0)=0 e fib(1)=1.

Esta versão faz duas chamadas a cada etapa.

int fib(int n) {
    if (n < 2) return n;
    return fib(n - 1) + fib(n - 2);
}

Executando Fibonacci

Aqui está o programa completo. fib(10) deve exibir 55.

Observe que esta versão ingênua repete trabalho, portanto é lenta para valores grandes de n.

#include <stdio.h>

int fib(int n) {
    if (n < 2) return n;
    return fib(n - 1) + fib(n - 2);
}

int main(void) {
    printf("%d\n", fib(10));
    return 0;
}

Soma dos dígitos

Para somar os dígitos de um número, obtenha o último dígito com n % 10 e faça a recursão com o restante usando n / 10.

O caso-base ocorre quando n chega a 0.

int digit_sum(int n) {
    if (n == 0) return 0;
    return (n % 10) + digit_sum(n / 10);
}

Soma dos dígitos em ação

Para 1234, a soma é 1+2+3+4 = 10. Vamos confirmar isso com um programa completo.

#include <stdio.h>

int digit_sum(int n) {
    if (n == 0) return 0;
    return (n % 10) + digit_sum(n / 10);
}

int main(void) {
    printf("%d\n", digit_sum(1234));
    return 0;
}

Máximo divisor comum

O algoritmo de Euclides é naturalmente recursivo. O GCD de a e b é igual ao GCD de b e a % b.

Quando b se torna 0, a é a resposta.

int gcd(int a, int b) {
    if (b == 0) return a;
    return gcd(b, a % b);
}

Programa completo de GCD

O GCD de 48 e 18 é 6. Este programa o exibe.

#include <stdio.h>

int gcd(int a, int b) {
    if (b == 0) return a;
    return gcd(b, a % b);
}

int main(void) {
    printf("%d\n", gcd(48, 18));
    return 0;
}

Invertendo um número

A recursão também pode controlar a saída. Ao exibir o último dígito depois de fazer a recursão, você inverte naturalmente a ordem do processamento.

Este auxiliar exibe cada dígito de um número em sua própria linha usando recursão.

#include <stdio.h>

void print_digits(int n) {
    if (n == 0) return;
    print_digits(n / 10);
    printf("%d ", n % 10);
}

int main(void) {
    print_digits(729);
    printf("\n");
    return 0;
}

Função de Potência

Elevar uma base a um expoente também é uma operação recursiva: base^exp é igual à base multiplicada por base^(exp-1).

O caso-base é o expoente 0, que retorna 1.

long power(int base, int exp) {
    if (exp == 0) return 1;
    return base * power(base, exp - 1);
}

Padrões que Você Reutilizará

Observe a estrutura em comum: verificar um caso-base e, em seguida, combinar a etapa atual com o resultado de uma chamada menor.

Depois que você identifica esse padrão, muitos problemas se transformam em funções recursivas curtas.

Verificação Rápida

Escolha os casos-base corretos.

Recapitulação

Fatorial, Fibonacci, soma de dígitos, GCD e potência compartilham um padrão recursivo: tratar o caso-base e, depois, combinar o valor atual com um subproblema menor.

Esses modelos podem ser reutilizados em muitas outras tarefas.

Perguntas Frequentes

A aula “Problemas recursivos clássicos” é grátis?

Sim — o texto completo de “Problemas recursivos clássicos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C Academy, atualize para CoddyKit PRO. O curso de C Academy inclui 4 aulas no total.

O que vou aprender em “Problemas recursivos clássicos”?

Fatorial e Fibonacci. Você pratica C Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar C Academy?

Nenhuma experiência prévia é necessária. C Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Problemas recursivos clássicos”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de C Academy?

Sim. Cada aula de C Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Como funciona a recursão
  2. Problemas recursivos clássicos
  3. Recursão versus iteração
  4. Evitando estouro de pilha
← Voltar para C Academy