#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; }
heu j'ai deja fais une source identique.mais bon, ... c'est mieux d'en avoir deux !
Une comme ca c'est déja trop
surtout que le choix de la recursiviter pour le calcul d'une factoriel n'est pas justifier car c'est iteratif
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...
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...
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).
oui en fait ca depends de la definition :)autant pour moi ma definition est :0! = 1 i=nn! = P i i=1dans 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. ;)
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 facilementet 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
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.
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte
1 873 882 membres 171 nouveaux aujourd'hui 16 151 membres club