voici mon probleme j'ai ecris un programmeen C pour calculer le factorielle
d'un nombre entrer par l'utilisateur.le programme marche sauf qu'à partir
du nombre 13 mon type de variable n'arive pas a contenir la reponse
j'ai beau utilisé les type float et long long int ils sont aussi limiter
à partir de certain nombre.votre aide sera la bienvenue. merci
voici mon code
#include <stdio.h>
#include <stdlib.h>
int facto(int n)
{
if(n<0)
return 0 ;
if(n==1 || n==0)
return 1;
else
return n * facto(n-1);
}
int main ()
{
int result;
int nb;
printf("entrer nombre : ");
scanf("%d",&nb);
result = facto(nb);
if(result >0)
printf("\nle facton de %d est %d \n",nb,result);
else
printf("\nvaleur incorrect\n") ;
voici mon probleme j'ai ecris un programmeen C pour calculer le factorielle
d'un nombre entrer par l'utilisateur.le programme marche sauf qu'à partir
du nombre 13 mon type de variable n'arive pas a contenir la reponse
j'ai beau utilisé les type float et long long int ils sont aussi limiter
à partir de certain nombre.
C'est normal.
Pour faire des calculs de plus haute précision, il faut utiliser des algorithmes spécialisés. C'est un développement non trivial. Autrement il existe des bibliothèques appropriées avec lesquelles je n'ai pas d'expérience, mais je crois que d'autres membres si.
Faire le calcul factorielle a nombre infinis te demandera une manipulation de chaine.
Donc en fait de calculer case par case et de d'afficher ta chaine de caractere ou d'entier selon ce que tu prefere.
Si ton but est effectivement de calculer des factorielles, tu devras passer par des libs tierces.
Si ton but est de manipuler des opérations de factorielles (combinatoire par exemple), il existe parfois des formules pour simplifier le calcul en amont et ne pas passer par la case overflow.
un exemple :
20! / 19!
Si tu es bourrin, tu auras un problème d'overflow. Sinon, tu peux simplifier en amont, et trouver la réponse qui est loin d'être overflow : c'est 20.
Sinon, sachant qu'au bout de 13! tu es overflow, ce que je fais en général, quand je dois me servir de factorielles - non overflow - c'est un tableau statique qui contient les 13 valeurs pré-calculées : on gagne beaucoup en performance, en perdant 4*13 octets en mémoire....
Virtman est ce que je peut avoir une ébauche d'algorithme si possible ca m'aidera beaucoup.si un autre membre aussi peut me l'envoyer je serai tres content merci.
Je voidrais calculer la somme des suite de fibronacci iinférieur à 4.000.00
Dommage qu on me dit overflow.
Jai assayer avec les double, int64, long mais sa na pas pris
depassement de capacité
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html