Factorielle

Discutez d'informatique ici !
z^42
Membre Naturel
Messages: 60
Enregistré le: 21 Sep 2014, 14:18

factorielle

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



Avatar de l’utilisateur
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 ?

Avatar de l’utilisateur
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 !

Avatar de l’utilisateur
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 ?

Avatar de l’utilisateur
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 :D
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.

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite