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

 C Discussion :

Calcul de Factorielle


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 109
    Points : 21
    Points
    21
    Par défaut Calcul de Factorielle
    Bonjour à tous,

    Je débute ma formation en langage C et j'essaye de faire un programme me permettant de calculer la factorielle d'un nombre donnée, j'ai écrit le programme suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #include <stdio.h>
     
     
        int facto(int x) {
            if (x==1) {
                      return 1;
                      }else{
                            facto(x-1)*x;
                            }
                            }
     
    int main(){
     
        int n;
         printf("entrez un nombre : ");
        scanf("%d",&n);
        printf("facto(%d)  = %d \n",n,facto(n));
        system("pause");
    }



    Or lorsque je rentre un chiffre différent de 1 la factorielle n'est pas calculée...pk et d'où vient mon erreur?


    Merci pour vos réponses.

  2. #2
    Scorpi0
    Invité(e)
    Par défaut
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
      int facto(int x) {
            if (x==1) {
                      return 1;
                      }else{
                            return facto(x-1)*x;
                       }
    }
    
    int main(){
       
        int n;
         printf("entrez un nombre : ");
        scanf("%d",&n);
        printf("facto(%d)  = %d \n",n,facto(n));
        system("pause");
    }

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 109
    Points : 21
    Points
    21
    Par défaut
    Merci! Je n'avais pas fait attention à sa :s

  4. #4
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    08-12-04-1.c: In function `facto':
    08-12-04-1.c:11: warning: control reaches end of non-void function
    EDIT
    pff trop lent...

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Gai,

    L'utilisation de la récursivité est totalement superflue pour un tel calcul.
    Si les cons volaient, il ferait nuit à midi.

  6. #6
    Invité(e)
    Invité(e)
    Par défaut
    Citation Envoyé par droggo Voir le message
    L'utilisation de la récursivité est totalement superflue pour un tel calcul.
    Et risqué puisse la taille de la pile n'est pas infinie.
    Et limité puisse que 21! dépasse la taille d'un non signé 64 bits.

    Mais quel meilleur exemple pour aborder la récursivité ?

  7. #7
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 622
    Points
    23 622
    Par défaut
    Citation Envoyé par adam974 Voir le message
    Merci! Je n'avais pas fait attention à sa :s
    À ça non plus, visiblement :-) (hint : le « ç » se trouve sur la touche 9).

  8. #8
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Hie,
    Citation Envoyé par mabu Voir le message
    Mais quel meilleur exemple pour aborder la récursivité ?
    Si tu trouves qu'un exemple où elle est inutile est le meilleur moyen pour aborder la récursivité... après on s'étonne que les débutants cherchent à en coller de partout.

    De meilleurs exemples, il y a en des tas. Les tours de Hanoi, par exemple. (Dont bien entendu on peut faire des solveurs sans récursivité, mais c'est un exemple où celle-ci se présente naturellement : c'est généralement la première manière de résoudre le problème à sortir de la réflexion, même si les débutants ne comprennent pas vraiment à quoi ça correspond, ils voient bien qu'il y a une méthode répétitive.)
    Si les cons volaient, il ferait nuit à midi.

  9. #9
    Invité(e)
    Invité(e)
    Par défaut
    Citation Envoyé par droggo Voir le message
    Si tu trouves qu'un exemple où elle est inutile est le meilleur moyen pour aborder la récursivité... après on s'étonne que les débutants cherchent à en coller de partout.
    Il fallait lire "[SARCASME]Mais quel meilleur exemple pour aborder la récursivité ; et apprendre à ne pas s'en servir ?[/SARCASME]".

    La récursivité, c'est bien, mais à mon avis peu adapté au c.

  10. #10
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Foe,
    Citation Envoyé par mabu Voir le message
    Il fallait lire "[SARCASME]Mais quel meilleur exemple pour aborder la récursivité ; et apprendre à ne pas s'en servir ?[/SARCASME]".
    Ok, désolé.

    Citation Envoyé par mabu Voir le message
    La récursivité, c'est bien, mais à mon avis peu adapté au c.
    Ça n'a rien à voir en soit avec le C.

    Il faut s'en servir quand elle se présente naturellement à l'analyse du problème, et ne pas chercher à en mettre partout, c'est aussi simple que ça.
    Si les cons volaient, il ferait nuit à midi.

  11. #11
    Invité(e)
    Invité(e)
    Par défaut
    Citation Envoyé par droggo Voir le message
    Il faut s'en servir quand elle se présente naturellement à l'analyse du problème, et ne pas chercher à en mettre partout, c'est aussi simple que ça.
    On est d'accord

  12. #12
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 622
    Points
    23 622
    Par défaut
    Citation Envoyé par mabu Voir le message
    La récursivité, c'est bien, mais à mon avis peu adapté au c.
    Et pourquoi ? Il me semble que c'est au contraire l'un des langages dans lesquels les overheads induits par ce genre d'opération sont réduits au minimum.

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

Discussions similaires

  1. Calculer la factorielle en java?
    Par inptiste1987 dans le forum Débuter avec Java
    Réponses: 20
    Dernier message: 07/11/2018, 23h02
  2. exception dans un calcul de factorielle
    Par ranell dans le forum Langage
    Réponses: 6
    Dernier message: 21/10/2007, 19h01
  3. Prog pour calculer la factorielle d'un nombre
    Par Lenezir dans le forum Langage
    Réponses: 2
    Dernier message: 11/05/2007, 09h42
  4. Calcul du factorielle
    Par knecmotet dans le forum C
    Réponses: 15
    Dernier message: 16/09/2005, 11h33
  5. fonction qui calcule la factorielle ?
    Par piff62 dans le forum C
    Réponses: 8
    Dernier message: 27/02/2005, 11h00

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