Factorielle par reccurrence !

Contenu du snippet

On calcul les factorielles des arguments passer dans le 'main'.

Source / Exemple :


#include <stdio.h>    // printf
#include <conio.h>    // getch
#include <stdlib.h>   // atoi
// n! = 1*2*3*4*...*(n-1)*n
// donc: n! = n * ((n-1)!). (par convention : 0! = 1)
// donc par reccurrence, on a l'algorithme suivant:
unsigned Factorielle(unsigned n)
{
return n == 0 ? 1 : n * Factorielle(n - 1);
}
// caclul les factorielle des arguments,exemple:
// "prgm 0 1 5 10 13" calcul 0!,1!,5!,10!,et 13!.
// et donne : 1,1,120,3628800,---OVERFLOW---.
int main(int argc,char **argv)
{
// s'il n'y a pas d'arguments : 
// argc=0 et *argv="C:\...\main.c"
while(--argc)
  {
  unsigned n;
  n = atoi( (*(++argv)));
  printf("%12u! = ",n);
  // on peut calculer jusqu'a 12!
  if(n > 12)  printf("--- OVERFLOW --- (max. : 12!)\n");
  else        printf("%u\n",Factorielle(n));
  }
getch();
return 0;
}

Conclusion :


Les commentaires sont les bien venus !
Voici quelques questions que je me pose :
  • Comment raccourcir ce code ?
  • Comment gerer l'OVERFLOW differemment ?
  • Comment faire un code plus rapide ?

A voir également

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.