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
- Como funciona a recursão
- Problemas recursivos clássicos
- Recursão versus iteração
- Evitando estouro de pilha