Exercice langage c

Résolu/Fermé
Furie21 - 21 sept. 2022 à 09:13
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 21 sept. 2022 à 11:48

Bonjour, j'ai du mal à résoudre cette exercice pouvez vous m'aider s'il vous plaît ? Merci d'avance 

Dans cet exercice nous allons comparer deux façons très différentes de coder la meme fonction ce qui vous permettra aussi de mieux comprendre la notion de

pile d'exécution. Tout d'abord ajoutez à votre projet la fonction suivante .

unsigned int factorielle (unsigned int n) { unsigned int i, fact; for (i=0, fact = 1; i < n; ++i)

facti+ 1; return fact;

Dans la fonction main appelez factorielle (3). Mettez un point d'arrêt avant et exécutez pas à pas chaque instruction. Notez que factorielle est appelée une seule fois et que le corps de la boucle est parcouru plusieurs fois.

A présent ajoutez la fonction suivante à votre projet et appelez factorec (3) dans le main. La fonction récursive est fondée sur la définition récursive du factoriel (n =n (n-1)) et s'appelle elle-meme. Otez le point d'arret devant l'appel factorielle(3) et placez-en un devant l'appel factorec(3). Executez un pas à pas (détaille).

unsigned int factorec (unsigned int n) { if (n == 0)

return 1; else

return n factorec (n -

1);

Surveillez la pile des appels et notez que factorec apparait une, puis deux, puis trois, puis quatre fois avec des valeurs differentes pour n. C'est la même fonction

mais le contexte d'exécution est différent à chaque fois. Notez enfin qu'à chaque fois que la flèche jaune passe sur l'accolade de fin de la fonction, le contexte de cet appel est dépilé: on a donc quatre, puis trois, puis

deux, puis un seul, puis aucun appel à factorec dans la pile des appels.

2 réponses

bazfile Messages postés 53543 Date d'inscription samedi 29 décembre 2012 Statut Modérateur, Contributeur sécurité Dernière intervention 18 avril 2024 18 448
Modifié le 22 sept. 2022 à 08:31

Bonjour.

Si tu espères être aidé, il ne faut pas se contenter de mettre l'énoncé de l'exercice,  il faut au minimum que tu montres ce que tu as déjà fait et que tu indiques ce que tu ne comprends pas, car il n'est pas question que quelqu'un fasse cet exercice à ta place, ce qui aurait aucun intérêt éducatif.

Lire attentivement CETTE PAGE


0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
21 sept. 2022 à 11:48

j'ai du mal à résoudre cette exercice pouvez vous m'aider s'il vous plaît ? Merci d'avance

@Furie21 :

Bonjour,

Dans l'énoncé, on ne te demande pas de "résoudre" l'exercice, mais de faire ce qu'il est indiqué et d'observer ce qui se passe, comme cela est indiqué.

Quel est exactement ton problème ?

0