Récursivité et retours multiples
Créez des fonctions qui s'appellent elles-mêmes et se ramifient.
Récursivité et retours multiples est une leçon Zig Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Zig Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Zig Academy comprend 4 leçons au total.
Une fonction qui s’appelle elle-même
La récursion consiste pour une fonction à s’appeler elle-même afin de résoudre progressivement une partie plus petite du même problème. 🔁
Toute récursion nécessite un cas de base
Le cas de base est le point d’arrêt. Sans lui, la fonction s’appellerait indéfiniment et provoquerait un dépassement de pile.
Le cas récursif
Le cas récursif rappelle la fonction avec une donnée d’entrée plus petite, en progressant régulièrement vers le cas de base.
fn factorial(n: u64) u64 {
if (n <= 1) return 1;
return n * factorial(n - 1);
}Suivre un petit appel
L’appel de factorial(3) devient 3 * factorial(2), puis 2 * factorial(1). Le cas de base renvoie 1, puis les résultats se multiplient en remontant.
La récursion utilise la pile
Chaque appel ajoute un cadre à la pile. Trop de niveaux provoquent un dépassement de pile : gardez donc une profondeur de récursion raisonnable.
De nombreux problèmes se résolvent plutôt avec une boucle
Tout ce qui est récursif peut aussi s’écrire avec une boucle. Les boucles évitent les cadres de pile supplémentaires et constituent donc souvent un choix plus sûr.
fn factorial(n: u64) u64 {
var acc: u64 = 1;
var i: u64 = 2;
while (i <= n) : (i += 1) acc *= i;
return acc;
}Une fonction renvoie un seul type
Une fonction Zig possède un unique type de retour, mais peut contenir plusieurs instructions return qui produisent toutes ce même type.
Les retours anticipés créent des embranchements
Vous pouvez renvoyer une valeur par anticipation depuis différents embranchements. Chaque chemin renvoie une valeur du type déclaré et quitte immédiatement la fonction.
fn sign(n: i32) i32 {
if (n > 0) return 1;
if (n < 0) return -1;
return 0;
}Renvoyer plusieurs valeurs dans une structure
Pour renvoyer des valeurs multiples, renvoyez une structure ou un tuple qui les regroupe en un seul résultat.
fn divmod(a: u32, b: u32) struct { q: u32, r: u32 } {
return .{ .q = a / b, .r = a % b };
}Décomposer le résultat
L’appelant lit les champs regroupés par leur nom, comme result.q et result.r, afin d’utiliser chaque élément renvoyé.
const res = divmod(7, 2);
// res.q is 3, res.r is 1Renvoyer aussi des erreurs
Une fonction peut renvoyer une union d’erreur afin qu’un embranchement signale un échec tandis que les autres renvoient une valeur normale.
Vérification rapide
Vous écrivez une fonction récursive, mais elle ne s’arrête jamais et provoque un plantage. Qu’avez-vous probablement oublié ?
Récapitulatif
La récursion nécessite un cas de base et un appel récursif portant sur une donnée plus petite. Une fonction possède un type de retour, mais plusieurs chemins de retour ; une structure regroupe plusieurs résultats. 🎯
Questions Fréquemment Posées
La leçon « Récursivité et retours multiples » est-elle gratuite ?
Oui — le texte complet de « Récursivité et retours multiples » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Zig Academy, passe à CoddyKit PRO. Le cours Zig Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Récursivité et retours multiples » ?
Créez des fonctions qui s'appellent elles-mêmes et se ramifient. Tu pratiques Zig Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Zig Academy ?
Aucune expérience préalable n'est requise. Zig Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Récursivité et retours multiples » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Zig Academy ?
Oui. Chaque leçon Zig Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Syntaxe des fonctions et types de retour
- Passage de valeurs ou de références
- Fonctions pub et visibilité
- Récursivité et retours multiples