CALCUL FACTORIEL PAR FONCTION RECURSIVE

cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 - 3 févr. 2004 à 20:35
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 - 6 févr. 2004 à 17:12
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/20100-calcul-factoriel-par-fonction-recursive

cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
6 févr. 2004 à 17:12
Je suis d'accord,
La fonction factorielle est par definition (la plus simple) un fonction reccursive.
De plus c'est le meilleur exemple possible (simple) pour comprendre la reccursivite (je l'ai apprise en programmation comme ca).
Elle est tres instrucive, surtout quand on s'interresse a comment les arguments sont enpiles dans la pile pour les variables locales.
morgandetoi06 Messages postés 389 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 17 décembre 2004 1
6 févr. 2004 à 12:06
c sur qu il faut choisir en fonction du programme, je n ai pas dit que le recursif etait adapté au calcul du factoriel, c juste pour montrer un exemple de fonction recursive simple pour pouvoir comprendre facilement
et bon la note 1/10 c un peu abusé je trouve j ai posté un petit exemple sans pretention pour les debutants c pas la peine de s'amuser à detruire la source comme ça
patriarch24 Messages postés 25 Date d'inscription samedi 12 avril 2003 Statut Membre Dernière intervention 28 mars 2006
6 févr. 2004 à 11:23
oui en fait ca depends de la definition :)
autant pour moi ma definition est :

0! = 1

i=n
n! = P i
i=1

dans ce cas c plus naturel. Et en effet je suis d accord sur le fait que le probleme des tours de hanoi (celebrissime) est tout bonnement irrealisable en iteratif. Le fait est qu il faut savoir choisir le mode pour chaque probleme. ;)
patriarch24 Messages postés 25 Date d'inscription samedi 12 avril 2003 Statut Membre Dernière intervention 28 mars 2006
6 févr. 2004 à 11:22
oui en fait ca depends de la definition :)
autant pour moi ma definition est :

0! = 1

i=n
n! = P i
i=1

dans ce cas c plus naturel. Et en effet je suis d accord sur le fait que le probleme des tours de hanoi (celebrissime) est tout bonnement irrealisable en iteratif. Le fait est qu il faut savoir choisir le mode pour chaque probleme. ;)
Utilisateur anonyme
5 févr. 2004 à 21:59
J'ai bcp travaillé sur la récursivité en tant qu'étudiant.
En fait, il est bcp plus naturel d'écrire la factorielle en récursif car ca colle mieux à la définition mathématiques (ie: n! = 1 pour n=0; n*(n-1)! sinon).
Je trouve ce petit programme très intérressant car assez peu de gens connaissent la récursivité et ses applications (comparée notamment à l'itératif). Cela sert bcp (voir quasiment uniquement) dans l'intelligence artificielle pour créer des modèles.
Toutefois, la factorielle est bcp plus lourde en récursif; mais c'est l'exemple que l'on apprend en premier.

Je vais tout de suite déposer une source récursive pour la résolution d'un problème hyper-complexe: les tours de Hanoï. Bon, ca doit pas être la première fois qu'on la met. Mais elle sera bien commentée (donc je vais mettre du temps pour la poser). En itératif ce problème serait vraiment chaud (faudrait passer par l'étude de la résolution).
patriarch24 Messages postés 25 Date d'inscription samedi 12 avril 2003 Statut Membre Dernière intervention 28 mars 2006
4 févr. 2004 à 11:29
plus lourde a coder ? pas forcement notamment en ce qui concerne une factorielle ;-)

int res = n;
for ( int i = n-1 ; i > 1 ; i - - )
res *= i ;

return res ;

rien de difficile la dedans si ? bon tu peux aussi changer int en long ca change rien au probleme. mais faut pas dire que c'est lourd c meme plus naturel comme maniere de faire je trouve...
morgandetoi06 Messages postés 389 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 17 décembre 2004 1
3 févr. 2004 à 22:01
les 2 sources que j ai deposé ne sont là qu a titre d exemple de fonctions recursives, et les fonctions recursives ne sont pas tres rapides car le code est à chaque fois chargé dans la memoire.
une boucle est donc plus rapide mais plus lourde à coder...
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
3 févr. 2004 à 21:19
surtout que le choix de la recursiviter pour le calcul d'une factoriel n'est pas justifier car c'est iteratif
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
3 févr. 2004 à 20:43
Une comme ca c'est déja trop
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
3 févr. 2004 à 20:35
heu j'ai deja fais une source identique.
mais bon, ... c'est mieux d'en avoir deux !
Rejoignez-nous