Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CALCUL FACTORIEL PAR FONCTION RECURSIVE


Information sur la source

Description

pour calculer la factorielle d un nombre
(pour les debutants afin de s initier aux fonctions récursives )
fonction recursive = fonction qui s appelle elle meme
 

Source

  • #include <iostream>
  • #include <stdlib.h>
  • using namespace std;
  • int factoriel(long N)
  • {
  • if(N<=1)
  • return 1;
  • else
  • return(N*factoriel(N-1));
  • }
  • int main(void)
  • {
  • long N;
  • cout<<"Entrez le nombre: "<<endl;
  • cin>>N;
  • cout<<"Resultat: "<<factoriel(N)<<endl;
  • system("PAUSE");
  • return 0;
  • }
#include <iostream>
#include <stdlib.h>
using namespace std;

int factoriel(long N)
{
if(N<=1)
return 1;
else
return(N*factoriel(N-1));
}

int main(void)
{
long N;
cout<<"Entrez le nombre: "<<endl;
cin>>N;
cout<<"Resultat: "<<factoriel(N)<<endl;
system("PAUSE");
return 0;
}

Commentaires et avis

signaler à un administrateur
Commentaire de JCDjcd le 03/02/2004 20:35:18

heu j'ai deja fais une source identique.
mais bon, ... c'est mieux d'en avoir deux !

signaler à un administrateur
Commentaire de vecchio56 le 03/02/2004 20:43:55 administrateur CS

Une comme ca c'est déja trop

signaler à un administrateur
Commentaire de djl le 03/02/2004 21:19:25

surtout que le choix de la recursiviter pour le calcul d'une factoriel n'est pas justifier car c'est iteratif

signaler à un administrateur
Commentaire de morgandetoi06 le 03/02/2004 22:01:04

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

signaler à un administrateur
Commentaire de patriarch24 le 04/02/2004 11:29:29

plus lourde a coder ? pas forcement notamment en ce qui concerne une factorielle ;-)

int res = n;
for ( int i = n-1 ; i &gt; 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...

signaler à un administrateur
Commentaire de TeLeTUbIz le 05/02/2004 21:59:21

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).

signaler à un administrateur
Commentaire de patriarch24 le 06/02/2004 11:22:52

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. ;)

signaler à un administrateur
Commentaire de patriarch24 le 06/02/2004 11:23:12

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. ;)

signaler à un administrateur
Commentaire de morgandetoi06 le 06/02/2004 12:06:31

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

signaler à un administrateur
Commentaire de JCDjcd le 06/02/2004 17:12:34

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.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,170 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.