Factorielle
Discutez d'informatique ici !
-
z^42
- Membre Naturel
- Messages: 60
- Enregistré le: 21 Sep 2014, 14:18
-
par z^42 » 13 Oct 2014, 13:25
Bonjour,
J'ai des difficultés avec les for :mur: Je sais que la factorielle ce calcule comme ca 5!= 1*2*3*4*5.
Pouvez vous me corriger svp.
Ecrire une fonction "int fact (int n)" qui retourne la factorielle de n
- Code: Tout sélectionner
public static int fact (int n) {
int f = 1;
for (int i=1; i<=n; i++)
f=f*i;
return(f);
}
Merci d'avance
Bonne journée
-
messinmaisoui
- Habitué(e)
- Messages: 1897
- Enregistré le: 24 Oct 2007, 13:52
- Localisation: Moselle (57)
-
par messinmaisoui » 13 Oct 2014, 14:24
- Code: Tout sélectionner
public static int fact (int n) {
int f = 1;
for (int i=1; i<=n; i++)
f=f*i;
return(f);
}
teste pour n = 5
f=1 i=1 f = 1*1 =1
i=2 f = 1*2 =2
i=3 f = 2*3 =6
i=4 f = 6*4 =24
i=5 f = 24*5 =120
donc ça a l'air bon ... c'est quoi le langage utilisé ?
Mon avatar me fait peur, est-ce normal docteur ?
-
Rockleader
- Habitué(e)
- Messages: 2126
- Enregistré le: 11 Oct 2011, 18:42
-
par Rockleader » 13 Oct 2014, 14:56
z^42 a écrit:Bonjour,
J'ai des difficultés avec les for :mur: Je sais que la factorielle ce calcule comme ca 5!= 1*2*3*4*5.
Pouvez vous me corriger svp.
Ecrire une fonction "int fact (int n)" qui retourne la factorielle de n
- Code: Tout sélectionner
public static int fact (int n) {
int f = 1;
for (int i=1; i<=n; i++)
f=f*i;
return(f);
}
Merci d'avance
Bonne journée
C'est du java si je ne m'abuse.
En revanche utiliser une structure for ici n'est pas le plus judicieux (reprenez moi si je dis une connerie)
Travailler en récursif me semble plus indiqué
Si
- Code: Tout sélectionner
public static int fact (int n)
{
if(n==0 || n==1) //cas trivial
{
return 1;
}
else
{
return n*fact(n-1);
}
}
Sauf erreur.
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !
-
messinmaisoui
- Habitué(e)
- Messages: 1897
- Enregistré le: 24 Oct 2007, 13:52
- Localisation: Moselle (57)
-
par messinmaisoui » 13 Oct 2014, 15:38
Le récursif ?
Surtout pour ce genre de cas d'école (calcul factorielle, tour de Hanoi, etc ...)
c'est la façon de faire la
plus élégante !
Mon avatar me fait peur, est-ce normal docteur ?
-
fatal_error
- Membre Légendaire
- Messages: 6610
- Enregistré le: 22 Nov 2007, 12:00
-
par fatal_error » 13 Oct 2014, 18:14
hello,
le else ne sert à rien à part ajouter des imbrications inutiles.
- Code: Tout sélectionner
if(){
return 1
}
//du code ici, pas besoin de mettre le else
ps: petite subtilité, avec la version itérative, si n est négative, on a pas de boucle infinie

la vie est une fête

-
z^42
- Membre Naturel
- Messages: 60
- Enregistré le: 21 Sep 2014, 14:18
-
par z^42 » 13 Oct 2014, 18:44
Merci pour vos messages.
@ messinmaisoui: oui c'est vrai la prochaine je vérifie :lol3:
C'est du Java. On n'apprend les bases avec la syntaxe du java.
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités