Skip to content
Snippets Groups Projects
Commit be2c8cd1 authored by Darciaux Yoann's avatar Darciaux Yoann
Browse files

Ajout du dernier exercice et fin du compte rendu

parent 7bc98b48
No related branches found
No related tags found
No related merge requests found
......@@ -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
exo8.ts 0 → 100644
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;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment