diff --git a/compte_rendu_debug.txt b/compte_rendu_debug.txt
index 8ee0877390d38d21d932eaee1082a0e541c6474c..21eb9dc0e1a0d686f885a8b40497c439f4ac6992 100644
--- a/compte_rendu_debug.txt
+++ b/compte_rendu_debug.txt
@@ -47,3 +47,69 @@ J'ai modifié mon programme pour qu'avant d'entrer dans la boucle, le programme
 Les test avec les valeurs données fonctionnent
 
 dans cette exercice, j'ai appris à gerer des nombres négatifs dans un algorithme, optimisation des boucles ainsi qu'à utiliser le débogage dans des situations concrètes
+
+Exercice 8:
+Prenons comme exemple n=5, voici les différentes étapes:
+
+Étape 1 : Appel initial deb8(5)
+Paramètre n : 5.
+Mémoire : valeur pas encore calculée.
+Appel récursif : deb8(4).
+
+Étape 2 : Appel récursif deb8(4)
+Paramètre n : 4.
+Mémoire :valeur pas encore calculée.
+Appel récursif : deb8(3).
+
+Étape 3 : Appel récursif deb8(3)
+Paramètre n : 3.
+Mémoire : pas encore calculée.
+Appel récursif : deb8(2).
+
+Étape 4 : Appel récursif deb8(2)
+Paramètre n : 2.
+Mémoire :valeur pas encore calculée.
+Appel récursif : deb8(1).
+
+Étape 5 : Appel récursif deb8(1)
+Paramètre n : 1.
+Mémoire :valeur pas encore calculée.
+Appel récursif : deb8(0).
+
+Étape 6 : Appel récursif deb8(0) (cas de base)
+Paramètre n : 0.
+Mémoire : Retourne 1 (cas de base).
+
+Étape 7 : Résolution des appels récursifs
+Les appels récursifs se résolvent dans l'ordre inverse :
+
+deb8(1) :
+
+valeur = 1 * 1 = 1.
+Retourne 1.
+deb8(2) :
+
+valeur = 2 * 1 = 2.
+Retourne 2.
+deb8(3) :
+
+valeur = 3 * 2 = 6.
+Retourne 6.
+deb8(4) :
+
+valeur = 4 * 6 = 24.
+Retourne 24.
+deb8(5) :
+
+valeur = 5 * 24 = 120.
+Retourne 120.
+
+États finaux de la mémoire
+Paramètre global n : 5.
+Valeur finale retournée : 120.
+
+Un nom plus approprié pour cette fonction serai donc calculeFactorielle, car la fonction calcule la factorielle d'un nombre
+
+La fonction fonctionne correctement pour des valeurs positives de n, cependant, elle ne gère pas les cas où n est négatif, ce qui entraînerait une récursion infinie et un dépassement de pile.
+Pour éviter les problèmes avec des valeurs négatives, j'ai ajouter une vérification au début de la fonction pour s'assurer que n est un entier positif ou nul, si n est négatif, je fais lever une exception. De plus je vais faire une version itérative pour otpimiser le programme car la version actuelle utilise une approche récursive qui peut entraîner un dépassement de pile pour des valeurs de n très grandes
+
diff --git a/exo8.ts b/exo8.ts
new file mode 100644
index 0000000000000000000000000000000000000000..eb0597b78a34f73ef20a8ec11ae6e8e3ffd9b11d
--- /dev/null
+++ b/exo8.ts
@@ -0,0 +1,14 @@
+let n = 5;
+console.log(calculerFactorielle(n));
+
+function calculerFactorielle(n: number): number {
+    if (n < 0) {
+        throw new Error("La factorielle n'est pas définie pour les nombres négatifs.");
+    }
+    let resultat = 1;
+    for (let i = 1; i <= n; i++) {
+        resultat *= i;
+    }
+    return resultat;
+}
+