Algoritmos C/C++

Recursão e call stack

Toda função recursiva precisa de base case e progresso.

O que é Recursão e call stack?

Toda função recursiva precisa de base case e progresso.

Resolva problema por instância menor.

Pontos importantes

  • Teste entradas vazias, únicas, duplicadas e ordenadas.
  • Separe correção de otimização.
  • Prefira a biblioteca padrão em produção.

Exemplos de código C e C++

C
Executar →
main.c
#include <stdio.h>

unsigned long long factorial(unsigned number) {
    return number < 2 ? 1 : number * factorial(number - 1);
}

int main(void) {
    printf("%llu\n", factorial(6));
}
Saída esperada
720
C++
Executar →
main.cpp
#include <iostream>

constexpr unsigned long long factorial(unsigned number) {
    return number < 2 ? 1 : number * factorial(number - 1);
}

int main() {
    constexpr auto value = factorial(6);
    std::cout << value << '\n';
}
Saída esperada
720

Comparação entre C e C++

Fatorial usa O(n) tempo e O(n) stack; entradas grandes exigem validação e frequentemente solução iterativa.

C

Loops, ponteiros, tamanhos e buffers são explícitos.

C++

Iteradores e algoritmos separam operação e armazenamento.

Exercícios práticos

Execute as duas versões e modifique-as para observar suas garantias.

  • Rastreie cada comparação.
  • Teste duplicatas e valores extremos.
  • Compare com a biblioteca padrão.