benzo -> oui mais l'utilisateur ne sait pas forcément qu'il faut rentrer un nombre entier. Si ta fonction ne doit traiter que des entiers, utilise un entier
3! = 1 * 2 * 3 non?
Ici i commence à 1 et s'arrête quand i est plus grand que nombre-1, donc quand i vaut nombre.
Donc on a 3! = 2(i = 1) * 1(i = 2)
De plus, resultat n'est pas initialisé, donc en fait on a
3! = nombre * 2 * 1 (où nombre est indéfini)
Penses donc à initialiser resultat à 1, en plus de corriger ton erreur d'algo.
int factorielle(int n)
{
int resultat = 1;
if ( n < 0 )
printf("Erreur : le nombre doit etre positif ou nul");
while(n > 0)
{
resultat *= n;
n = n - 1;
}
return resultat;
}
Premièrement, la prochaine fois merci de créer un sujet dans le forum Java, ici les gens font du C. Ensuite, essaye de poster ton code de façon à profiter de la coloration, ça sera plus lisible.
Enfin, il faut que tu apprennes à débuguer ton programme. S'il ne se comporte pas de la bonne façon, c'est que quelque chose t'échappe, probablement que les valeurs manipulées par ton programme ne sont pas les bonnes. Tu peux commencer par rajouter des System.out.println dans la boucle pour te rendre compte que f ne prend pas les bonnes valeurs, et que c'est dû au fait que l'entier a que tu lis n'est pas le bon.
Objectif Zéro Bug - le test logiciel professionnel | L'électronique de zéro | Tableaux & pointeurs | Pointeurs sur fonctions | Lecture/écriture binaire