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 1Devuelva 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
- Sintassi delle funzioni e tipi restituiti
- Passaggio di valori e riferimenti
- Funzioni pub e visibilità
- Ricorsione e restituzioni multiple