IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

[Débutant][Conception] Factorielle en Java par recursivité


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 33
    Points : 19
    Points
    19
    Par défaut [Débutant][Conception] Factorielle en Java par recursivité
    Bonjour, voilà dans un livre de Java j'ai trouvé un exercice me demandant de créer une méthode d'en tete
    public int factorielle(int n)
    et en utilisant un conditionnel « if » et un appel de la méthode à elle-même, je dois implémenter une méthode qui exerce une factorielle sur le int n...
    Je sais que vous n'etes pas là pour me pondre un code mais là j'ai vraiment chercher mais franchement je galère grave alors si vous avez déjà fait ce code en exercice ou si c'est simple pour vous ... aidez moi.
    Merci.

    Pour rappel une récursive c'est ca:
    public void foo(int x) {
    if ( x < 1 ) { // Mettre curseur à la ligne suivante
    System.out.println(); }
    else { // Afficher une étoile à l'écran
    System.out.print('*');
    foo(x-1); }
    }

    Ce qui me donne une belle ligne horizontale...

  2. #2
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Voilà...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public int factorielle(int n) {
      return n <= 1
           ? 1
           : n * factorielle(n - 1);
    }

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 33
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par herve91
    Voilà...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public int factorielle(int n) {
      return n <= 1
           ? 1
           : n * factorielle(n - 1);
    }
    Euh oue merci ...t'a fait ça en qq secondes...moi ca faisait depuis 21h10 que je galèrai dessus...
    Par contre un aspect de ta syntaxe m'échappe notament ce "?" dont je ne saisis pas la signification?

    Sinon connaitriez vous un tutorial sur les Iterator et des exercies + solutions ? : J'ai cherche sur ce site mais je n'ai rien vu sur ce thème...


    MercI.

  4. #4
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 48
    Points : 41
    Points
    41
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    return  n <= 1 ? 1 : n * factorielle(n - 1);
    équivaut à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (n <= 1)
        return  1;
    else
        return  n * factorielle(n - 1);
    Voilà.

  5. #5
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    ? est le seul opérateur ternaire. Syntaxe :

    <condition> ? <expression1> : <expression2>

    La valeur de l'expression ci-dessus est <expression1> si <condition> est vrai, <expression2> sinon.

    C'est un raccourci pour

    if <condition>
    valeur = <expression1>
    else
    valeur = <expression2>

    L'intérêt aussi est que c'est une expression et non une instruction, donc tu peux l'utiliser dans une autre expression, genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int x = ((a < b) ? a : b) + 1;

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Points : 948
    Points
    948
    Par défaut
    Citation Envoyé par Sylvester
    Citation Envoyé par herve91
    Voilà...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public int factorielle(int n) {
      return n <= 1
           ? 1
           : n * factorielle(n - 1);
    }
    Euh oue merci ...t'a fait ça en qq secondes...moi ca faisait depuis 21h10 que je galèrai dessus...
    Par contre un aspect de ta syntaxe m'échappe notament ce "?" dont je ne saisis pas la signification?

    Sinon connaitriez vous un tutorial sur les Iterator et des exercies + solutions ? : J'ai cherche sur ce site mais je n'ai rien vu sur ce thème...


    MercI.
    le code est en fait equivalent a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      if(n <= 1){
         return 1;
      }else{
         return n * factorielle(n - 1);
      }

    Sun Certified Business Component Developer
    Sun Certified Java Programmer
    --
    The definitive toolbox for GWT applications: gwt-toolbox
    My blog about Java and JEE: Benjamin's Blog

  7. #7
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 33
    Points : 19
    Points
    19
    Par défaut
    Merci...bien vu le code...désolé de faire le boulet sur la syntaxe mais je débute...alors soyez pas méchants... Mais moi je pensais que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class factor {
    public int factori(int n) { 
        if(n <= 1) 
         return 1; 
      else 
         return n * factori(n - 1); 
      } 
     
    }
    reverrai toujours 1 à cause du if qui return 1 car en faisant n-1 on arrivera un moment à 1...

  8. #8
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 48
    Points : 41
    Points
    41
    Par défaut
    bah non !!!!

    Imagine tu veux calculer 5!

    ta fonction elle va faire 5*(factori(4)).
    Or factori(4) ca va faire 4*factori(3) et ainsi de suite...

    donc au final tu vas te retrouver avec 5*4*3*2*1 soit 5!.

    Suffit de comprendre comment fonctionne la récursivité

  9. #9
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 33
    Points : 19
    Points
    19
    Par défaut
    Ouiiiiii j'ai compris le principe du code ...effectivement c'est très clair...Merci a tous et à toutes

  10. #10
    Provisoirement toléré
    Homme Profil pro
    Développeur JAVA JEE / PHP
    Inscrit en
    Avril 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur JAVA JEE / PHP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 151
    Points : 72
    Points
    72
    Par défaut
    Est ce que ta fonction peut calculer 100! ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [débutant] pré-requis de java.sound
    Par helonear dans le forum Multimédia
    Réponses: 2
    Dernier message: 20/06/2005, 10h26
  2. [Débutante] Conception
    Par bolo dans le forum Assembleur
    Réponses: 14
    Dernier message: 25/11/2004, 03h40
  3. [débutante][Concept] Destruction d'objet, mode d'emploi?
    Par skea dans le forum Général Java
    Réponses: 4
    Dernier message: 12/06/2004, 21h48
  4. [Débutant][Conception] LIFO et Iterator
    Par Wisefool dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 05/05/2004, 13h50
  5. [Concept] BD ou Gestion par fichier. Intérêt de la BD ?
    Par Cian dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 28/11/2002, 12h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo