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 :

probleme fonction recursive


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 47
    Par défaut probleme fonction recursive
    bonjour tous,
    je veut savoir comment un compilateur traite cette fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    //juste un exemple
    int f(n) int n;
    {
       if (n<0)return 1;
     
       y=3*n;
       f(n-1);
       f(n-3);
    }
    la question est:
    quand on arive a l'instruction "f(n-1);" en va reprendre f avec le parametre n-1;
    mais apres est qu'il va passer au instruction suivant "f(n-2);" ou il va appeler de nouveau f((n-1)-1)?

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par radouane_as
    bonjour tous,
    je veut savoir comment un compilateur traite cette fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    //juste un exemple
    int f(n) int n;
    {
       if (n<0)return 1;
     
       y=3*n;
       f(n-1);
       f(n-3);
    }
    la question est:
    quand on arive a l'instruction "f(n-1);" en va reprendre f avec le parametre n-1;
    mais apres est qu'il va passer au instruction suivant "f(n-2);" ou il va appeler de nouveau f((n-1)-1)?
    Non je ne pense pas, surtout qu'une fois la condition de sortie effectuée, il remonte dans la pile des appels, d'ailleurs ta tonction n'est pas bien écrite, du moins au début même pour un code d'exemple... et en plus tu n'as même pas déclaré la variable y ! En plus cette variable ici ne sert strictement à rien du tout !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //juste un exemple
    int f (int n)
    {
       int y = 0;
     
       if (n<0) return 1;
     
       y=3*n;
       f(n-1);
       f(n-3);
    }
    Tu peux lire un des mes tutoriels sur la récursivité: Récursivité en Langage C, en espérant que ca t'aidera à comprendre les mécanismes de bases de la récursivité
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre averti
    Inscrit en
    Août 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 47
    Par défaut
    mon probleme c'est que je veut parcourir un arbre binaire copletemet:
    le code est le 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
     
    node n;
    node parcours (node n)
    {
     
     
       if (n==null) return null;
    //je veut chercher un noeud particulier
       switch(n.type)
    {case a://a est un entier
    return n;
    default:
    parcours(droit(n));//fils droite de n aussi c'est un noeud
    parcours(gauche(n));//fils gauche de n aussi c'est un noeud
    return;
    }
    }
    est ce que ca permet de parcourer tout l'arbre.

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Arf les arbres je suis pas encore un grand spécialiste(je suis justement en train de les étudier)... mais ce que je peut te dire c'est que tu fait en ce moment même du C année 70

    Cette forme de fonction n'existe carrément plus, m'étonne qu'un compilateur l'accepte encore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    node n;
    node parcours (node n)
    Une version plus à jour et dans l'air du temps serait:
    En tout cas, ce que je sais, c'est que l'algorithme change suivant le type de parcours que tu veux... un parcours en profondeur ? Si en profondeur, quel type: préfixe, infixe, suffixe? Un parcours en largeur ?
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    Membre averti
    Inscrit en
    Août 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 47
    Par défaut
    moi je veut faire un parcours en profendeur.

    "pour la declaration de n au dessus c'est un oublit merci"

  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par radouane_as
    moi je veut faire un parcours en profendeur.

    "pour la declaration de n au dessus c'est un oublit merci"
    Mais quel type de parcours en profondeur très exactement ? Il en existe trois si tu veux tout savoir !

    • Préfixe
    • Infixe
    • Suffixe


    Il faut choisir car l'ordre de parcours change !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

Discussions similaires

  1. probleme avec la fonctions recursive
    Par akkinaj dans le forum Débuter
    Réponses: 2
    Dernier message: 16/07/2008, 12h30
  2. [Syntaxe] Probleme Fonction Recursive C++
    Par selimen dans le forum C++
    Réponses: 6
    Dernier message: 30/05/2007, 15h23
  3. [C#] probleme avec une fonction recursive
    Par K_!!! dans le forum ASP.NET
    Réponses: 2
    Dernier message: 01/08/2006, 18h22
  4. [XSL]Probleme fonction recursive
    Par Le-Cortex dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 12/12/2005, 15h10
  5. probleme sql, fonction recursive
    Par CaptainChoc dans le forum Langage SQL
    Réponses: 2
    Dernier message: 21/11/2005, 01h45

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