Discuter:Factorielle

Un article de Wikipédia, l'encyclopédie libre.

Ah ben c'est sympa de modifier mon code des factorielles pour faire un truc moins bien :\ (pas a la norme ANSI, variables qui servent a rien..) -- Nicolas

Je ne suis pas d'accord. Mon code est beaucoup plus clair, et plus simple. Je trouve ta boucle

   for (res = nb--; nb; --nb)

beaucoup trop ésotérique pour du code qui est sensé éclairer le lecteur. Le code de la version récursive était inutilement embrouillé et cryptique. Quand à la norme ANSI... je programme en C++ pas en C, corriges-moi si tu veux, mais il me semble malgré ma faible connaissance du C (par opposition au C++) que mon code est 100% ANSI. --FvdP 27 oct 2003 à 23:06 (CET)

[plus tard]

Question de goût, sans doute, mais j'aime pas initialiser des variables étrangères à la boucle (comme "res") dans la boucle... Donc je préfère çà:

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

à ceci:

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

mais enfin bon soit je ne dis plus rien ? --FvdP 27 oct 2003 à 23:38 (CET)

No problem. Je met de préférence l'initialisation principale dans le boucle même si ce n'est pas la variable d'induction; mais c'est pareil pour moi. -- Looxix

Commentaire de modification de Nicolas: "Mathematiquement, la decrementation est plus adaptee, car on ecrit 5! = 5 * 4 * 3 * 2 * 1 et non pas 5! = 1 * 2 * 3 * 4 * 5. De plus, le if permet de visualiser tout de suite l'exception mathematique."

  • on n'écrit pas plus 5*4*3*2*1 que 1*2*3*4*5 et la dernière version du code de Looxix fait 5*4*3*2*1 (lis-le bien !) (ou plus exactement, il est vrai, 1*5*4*3*2.)
  • 0 n'est précisément pas une exception mathématique de la définition de factorielle. Ca se voit bien en regardant à l'envers: n! = (n+1)!/(n+1) donc en particulier 0! = 1!/1 = 1.

--FvdP 28 oct 2003 à 00:01 (CET)

Pourquoi utiliser de match dans le code caml alors que de simple if suffisent et seraient plus lisible pour le lecteur non initié ? 195.220.159.165

[modifier] Phrase :

Bonjour,

je ne comprend pas cette phrase :

Elle permet à deux nombreux identifés en combinatoire d'être valides pour des tailles nulles.

Je pense qu'il y a une erreur.