0Pricing
Zig Academy · Lezione

Ricorsione e restituzioni multiple

Creare funzioni che chiamano sé stesse e generano più rami

Ricorsione e restituzioni multiple è una lezione Zig Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Zig Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Zig Academy include 4 lezioni in totale.

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 base case es el punto de parada. Sin él, la función se llamaría indefinidamente y desbordaría la pila.

El caso recursivo

El recursive case vuelve a llamar a la función con una entrada más pequeña, avanzando constantemente 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 base case devuelve 1 y los resultados se multiplican al deshacer las llamadas.

La recursión usa la pila

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

Muchos problemas se resuelven mejor con bucles

Todo lo que se puede expresar mediante recursión también se puede escribir como un loop. 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 solo tipo

Una función de Zig tiene un único return type, pero puede contener muchas instrucciones return que produzcan ese mismo tipo.

Los retornos anticipados abren distintas ramas

Puede return early desde distintas ramas. Cada ruta devuelve un valor del tipo declarado y sale de la función inmediatamente.

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 multiple values, 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 fields 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 error union para que una rama 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 se bloquea. ¿Qué es lo que probablemente olvidó?

Repaso

La recursión necesita un base case 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. 🎯

Domande Frequenti

La lezione «Ricorsione e restituzioni multiple» è gratuita?

Sì — il testo completo di «Ricorsione e restituzioni multiple» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Zig Academy, passa a CoddyKit PRO. Il corso Zig Academy include 4 lezioni in totale.

Cosa imparerò in «Ricorsione e restituzioni multiple»?

Creare funzioni che chiamano sé stesse e generano più rami Eserciti Zig Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Zig Academy?

Non è richiesta alcuna esperienza precedente. Zig Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Ricorsione e restituzioni multiple»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Zig Academy?

Sì. Ogni lezione Zig Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Sintassi delle funzioni e tipi restituiti
  2. Passaggio di valori e riferimenti
  3. Funzioni pub e visibilità
  4. Ricorsione e restituzioni multiple
← Torna a Zig Academy