@@ -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