Algoritmos en C/C++

Recursión y call stack

Toda función recursiva necesita caso base y progreso hacia él.

¿Qué es Recursión y call stack?

Toda función recursiva necesita caso base y progreso hacia él.

Resuelve un problema mediante una instancia menor.

Puntos importantes

  • Prueba entradas vacías, únicas, duplicadas y ordenadas.
  • Separa corrección y optimización.
  • Prefiere la biblioteca estándar en producción.

Ejemplos de código C y C++

C
Ejecutar →
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));
}
Resultado esperado
720
C++
Ejecutar →
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';
}
Resultado esperado
720

Comparación entre C y C++

Factorial usa O(n) tiempo y O(n) stack; entradas grandes requieren validación y a menudo solución iterativa.

C

Bucles, punteros, tamaños y buffers se escriben explícitamente.

C++

Iteradores y algoritmos separan la operación del almacenamiento.

Ejercicios prácticos

Ejecuta ambas versiones y modifícalas para observar sus garantías.

  • Traza cada comparación.
  • Prueba duplicados y valores extremos.
  • Compara con la biblioteca estándar.