Exercice langage c
Résolu[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
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.
- Exercice langage c
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage visual basic - Télécharger - Langages
- Langage basic gratuit - Télécharger - Édition & Programmation
2 réponses
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.