Factorielle

hamzahb Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
pouvez vous me dire pk le resultat est toujours 1.0 !
ce sont 52 fonctions de factorielle , une harmonique et l'autre récursive


2 réponses

Utilisateur anonyme
 
Bonjour, pour plus de lisibilité merci de poster le code en utilisant la coloration syntaxique.
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonjour,

Comme mentionné par Whismeril, il est plus pratique d'avoir ton code source au format texte à l'aide des balises dédiées, sinon comment je fais pour tester ton code à partir d'une image ? Je ne vais pas tout recopîer...

Quelques remarques, en listant ton code.

Pour la première méthode :
i est un entier, donc i/valeur est une division entière (comme à l'école), mais puisque i vaut 1, i/valeur vaut soit 1 si valeur=1, soit 0 si valeur>1
Donc dans ta boucle tu fais toujours resultat + 0, sauf lorsque valeur=i où tu fais resultat+1 ce qui explique ton 1 final.
Remarque : puisque i vaut toujours 1 et ne change jamais il n'y a aucun intérêt d'utiliser une variable pour cela.
Pour corriger ton problème tu peux faire resultat + 1.0/valeur, puisque 1.0 est un double la division sera flottante et tu auras bien ce que tu veux.

Pour la deuxième méthode :
Tu multiplie fac par value, or fac vaut 0 au départ donc le produit fera toujours 0 et tu auras 0 à la fin...
Initialises fac à 1 au départ pour obtenir un résultat qui évolue.
Remarque : pourquoi tu fais une boucle for dans une méthode que tu dis être "récursive" ça n'a pas de sens. De plus ta boucle for est bizarrement construite, tu initialises j mais tu fais une condition et un décrément sur value, ce n'est jamais comme cela que l'on devrait faire.
0