0Pricing
Zig Academy · Lección

Recursión y retornos múltiples

Funciones que se llaman a sí mismas y se ramifican.

Recursión y retornos múltiples es una lección gratuita de Zig Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Zig Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Zig Academy incluye 4 lecciones en total.

Una función que se llama a sí misma

La recursión ocurre cuando una función se llama a sí misma para resolver, paso a paso, una parte más pequeña del mismo problema. 🔁

Toda recursión necesita un caso base

El caso base es el punto de detención. Sin él, la función se llamaría indefinidamente y desbordaría la pila.

El caso recursivo

El caso recursivo vuelve a llamar a la función con una entrada más pequeña, avanzando de forma constante hacia el caso base.

fn factorial(n: u64) u64 {
    if (n <= 1) return 1;
    return n * factorial(n - 1);
}

Siga una llamada pequeña

Llamar a factorial(3) se convierte en 3 * factorial(2) y después en 2 * factorial(1). El caso base devuelve 1 y los resultados se multiplican al volver.

La recursión usa la pila

Cada llamada añade un marco a la pila. Demasiados niveles provocan un desbordamiento de pila, así que mantenga razonable la profundidad de la recursión.

Muchos problemas se resuelven mejor con bucles

Todo lo que puede escribirse de forma recursiva también puede escribirse con un bucle. Los bucles evitan marcos adicionales en la pila, por lo que suelen ser la opción más segura.

fn factorial(n: u64) u64 {
    var acc: u64 = 1;
    var i: u64 = 2;
    while (i <= n) : (i += 1) acc *= i;
    return acc;
}

Una función devuelve un tipo

Una función de Zig tiene un único tipo de retorno, aunque puede contener muchas sentencias return que produzcan ese mismo tipo.

Los retornos anticipados crean ramificaciones

Puede devolver el resultado anticipadamente desde distintas ramificaciones. Cada ruta devuelve un valor del tipo declarado y sale de la función de inmediato.

fn sign(n: i32) i32 {
    if (n > 0) return 1;
    if (n < 0) return -1;
    return 0;
}

Devuelva varios valores en una estructura

Para devolver varios valores, devuelva una estructura o una tupla que los agrupe en un único resultado.

fn divmod(a: u32, b: u32) struct { q: u32, r: u32 } {
    return .{ .q = a / b, .r = a % b };
}

Desempaquete el resultado

Quien llama a la función lee los campos agrupados por nombre, como result.q y result.r, para usar cada parte devuelta.

const res = divmod(7, 2);
// res.q is 3, res.r is 1

Devuelva también errores

Una función puede devolver una unión de errores para que una ramificación indique un fallo mientras las demás devuelven un valor normal.

Comprobación rápida

Ha escrito una función recursiva, pero nunca se detiene y falla. ¿Qué olvidó probablemente?

Resumen

La recursión necesita un caso base y una llamada recursiva con una entrada más pequeña. Una función tiene un tipo de retorno, pero muchas rutas de retorno, y una estructura agrupa varios resultados. 🎯

Preguntas frecuentes

¿La lección «Recursión y retornos múltiples» es gratis?

Sí — el texto completo de «Recursión y retornos múltiples» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Zig Academy, actualiza a CoddyKit PRO. El curso de Zig Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Recursión y retornos múltiples»?

Funciones que se llaman a sí mismas y se ramifican. Practicas Zig Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Zig Academy?

No se requiere experiencia previa. Zig Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Recursión y retornos múltiples»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Zig Academy?

Sí. Cada lección de Zig Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Sintaxis de funciones y tipos de retorno
  2. Pasar valores frente a referencias
  3. Funciones pub y visibilidad
  4. Recursión y retornos múltiples
← Volver a Zig Academy