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 :

[débutant]Fonction récursive ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut [débutant]Fonction récursive ?
    Bonjour,

    Je suis dans la doc du tutorial ANCI_C dans la partie fonction récursive, est j'ai un peu de mal à comprendre cet exemple notament le else
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int facto(int n)
    {
    if (n == 1) return(1);
    else return(n * facto(n-1));
    }
    Quelqu'un peut il m'expliquer, je suppose que l'on calcul une factorielle, mais qu'obtient t'on en résultat ?
    ex si n=4 à t'on 4 3 2 1
    ou 24

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    • Si n=1 tu as 1.
    • Si n=2 tu as 2*facto(1) qui est égal à 2.
    • Si n=3 tu as 3*facto(2) qui est égal à 3*2*facto(1) qui est égal à 6
    • Si n=4 tu as 4*facto(3) qui est égal à 4*3*facto(2) qui est égal à 4*3*2*facto(1) qui est égal à 24.

    etc.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 411
    Par défaut
    Citation Envoyé par SPACHFR
    Bonjour,

    Je suis dans la doc du tutorial ANCI_C dans la partie fonction récursive, est j'ai un peu de mal à comprendre cet exemple notament le else
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int facto(int n)
    {
    if (n == 1) return(1);
    else return(n * facto(n-1));
    }
    Quelqu'un peut il m'expliquer, je suppose que l'on calcul une factorielle, mais qu'obtient t'on en résultat ?
    ex si n=4 à t'on 4 3 2 1
    ou 24
    on calcule bien une factorielle donc si n = 4, la fonction retourne 24.

  4. #4
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut
    Merci pour vos réponses
    En fait si j'ai bien compris la valeur n'est retourné par la fonction que lorsque l'égalité n == 1 est vrai, mais à quoi sert le return du else est ce lui qui rend cette fonction récursive ?

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Relis mon post.
    Une fonction récursive est une fonction qui s'appelle elle-même.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut
    Ok, une seconde lecture de ton post est .... c'est devenu clair

    Merci

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 411
    Par défaut
    Citation Envoyé par SPACHFR
    Merci pour vos réponses
    En fait si j'ai bien compris la valeur n'est retourné par la fonction que lorsque l'égalité n == 1 est vrai, mais à quoi sert le return du else est ce lui qui rend cette fonction récursive ?
    tu peux essayer de comprendre en déroulant la fonction...

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

Discussions similaires

  1. débutant, appel multiple d'une fonction récursive
    Par yzanconato dans le forum jQuery
    Réponses: 2
    Dernier message: 27/04/2010, 16h48
  2. [Débutante]Fonction pour écrire un champ vide
    Par Bewitch dans le forum ASP
    Réponses: 14
    Dernier message: 30/08/2005, 11h43
  3. [Débutant]Fonction avec des flags
    Par @r$£~%[ dans le forum C++
    Réponses: 10
    Dernier message: 22/08/2005, 10h19
  4. [Débutant] fonction CALLBACK
    Par tlt dans le forum MFC
    Réponses: 2
    Dernier message: 29/10/2004, 16h55
  5. [Ada] [Débutant] Fonction et Put_Line
    Par hitchie dans le forum Ada
    Réponses: 1
    Dernier message: 18/10/2004, 09h44

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