Calcul factoriel par fonction recursive

Soyez le premier à donner votre avis sur cette source.

Snippet vu 25 240 fois - Téléchargée 29 fois

Contenu du snippet

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 / Exemple :


#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;
}

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
3
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.
Messages postés
389
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
17 décembre 2004
1
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
Messages postés
25
Date d'inscription
samedi 12 avril 2003
Statut
Membre
Dernière intervention
28 mars 2006

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. ;)
Messages postés
25
Date d'inscription
samedi 12 avril 2003
Statut
Membre
Dernière intervention
28 mars 2006

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. ;)
Messages postés
215
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
25 septembre 2010

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).
Afficher les 10 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.