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

Delphi Discussion :

Tutorial récursivité problème


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 264
    Par défaut Tutorial récursivité problème
    Bonjour, j'ai préféré faire un autre topic car il est un peu différent de celui que j'ai il y a qq heurs.

    En retravaillant la procédure combinaison :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure combinaison2(st, tete: string);
    var i: integer;
    begin
      if length(st) = 1 then memo1.lines.add(tete + st)
      else
        for i := 1 to length(st) do
        begin
          combinaison1(copy(st, 2, length(st) - 1), tete + st[1]);
          st := copy(st, 2, length(st) - 1) + st[1];
        end;
    end;
    et en retravaillant le déroulement schématisé :
    http://recursivite.developpez.com/?page=page_1#L0

    Je n'arriver pas a dérouler de la même manière :
    Ici le
    ne me semble pas correct car au 1er appel de la procédure , je me retrouve avec :

    et non

    ??

    Est ce qqun pourrait me dire ou est ce que je me suis tromper ?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 264
    Par défaut
    Juste pour rajouter pour moi le code qui "marche" en accord avec le schéma
    est le suivant :

    JE l'ai tourné dans tous les sens et j'arrive à qqch de marche en accord avec le corps avec ce code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure combinaison2(st, tete: string);
    var i: integer;
    begin
      if length(st) = 1 then memo1.lines.add(tete + st)
      else
        for i := 1 to length(st) do
        begin
          combinaison1(copy(st, 2, length(st) ), tete + st[1]);
          st := copy(st, 2, length(st) ) + st[1];
        end;
    end;
    Y aurait-il des erreurs ?

  3. #3
    Membre Expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 568
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 568
    Par défaut
    Pourrais-tu nous dire ce que tu cherches à faire exactement ? S'agit-il de trouver toutes les combinaisons d'une ensemble de caractères donnés ?

    cdlt

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  4. #4
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    Oui sans le role extact de la fonction c'est dure de deviner tout seul ... surtout avec un code incomplet

    D'ailleur je le redit : Tu parle de recursivitée mais en aucun cas cette fonction telle qu'elle est recursive.
    Le but premier d'une fonction recursive est de s'auto-appeler, or je ne vois aucun appel a "Combinaison2" ..... Par contre il y a une fonction "Combinaison1" dont le code serait fort utile pour comprendre le fonctionnement de ta procedure

  5. #5
    Membre Expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 568
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 568
    Par défaut
    J'ai un doute, cela ressemble très fortement au post de Bativir :

    http://www.developpez.net/forums/sho...d.php?t=336892

    Aurait-on affaire à une joyeuse bande d'étudiants en mal s'inspiration ? Est-on en période d'examen ?

    Prière de réfléchir un peu avant de poser des questions (si mon doute est confirmé).

    cdlt

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 264
    Par défaut
    Bon je crois que je ne me suis pas bien fait comprendre .....
    Je débute en récursivité.
    Qu'est ce que je fait: je vais directement vers le cours proposé par Developpez.com .
    Je suis le cours pas à pas , je me teste pour savoir si j'ai bien acquis les connaissance ou pas.
    Et la en faisant des tests , je m'aperçois qu'il y a qqch qui ne va pas.
    Le problème est que le schéma de déroulement ne me semble pas en accord avec le code proposé : Voir la partie du bas .
    http://recursivite.developpez.com/?page=page_1

    Pour moi le bon code serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure combinaison2(st, tete: string);
    var i: integer;
    begin
      if length(st) = 1 then memo1.lines.add(tete + st)
      else
        for i := 1 to length(st) do
        begin
          combinaison1(copy(st, 2, length(st) ), tete + st[1]);
          st := copy(st, 2, length(st) ) + st[1];
        end;
    end;
    Aurait-on affaire à une joyeuse bande d'étudiants en mal s'inspiration ? Est-on en période d'examen ?

    Prière de réfléchir un peu avant de poser des questions (si mon doute est confirmé).
    Ton doute proviendrai peut être d'un manque d'humilité et de compassion vis à vis de débutants.


    Oui sans le role extact de la fonction c'est dure de deviner tout seul ... surtout avec un code incomplet

    D'ailleur je le redit : Tu parle de recursivitée mais en aucun cas cette fonction telle qu'elle est recursive.
    Le but premier d'une fonction recursive est de s'auto-appeler, or je ne vois aucun appel a "Combinaison2" ..... Par contre il y a une fonction "Combinaison1" dont le code serait fort utile pour comprendre le fonctionnement de ta procedure
    Dans le cours proposé par developper.com c'est marqué récursivité:
    Je pense que combinaison1 est la meme que combinaison2: c'est juste pour dire que c'est comme si on avait une autre fonction qui fait un autre programme...

Discussions similaires

  1. Problème de récursivité en Prolog
    Par poooky dans le forum Prolog
    Réponses: 5
    Dernier message: 04/01/2007, 17h35
  2. Problème de récursivité
    Par mehdi.berra dans le forum C
    Réponses: 8
    Dernier message: 14/12/2006, 17h42
  3. Réponses: 4
    Dernier message: 08/12/2006, 11h15
  4. glob & récursivité : étrange problème
    Par Mat_F dans le forum Langage
    Réponses: 3
    Dernier message: 27/07/2006, 12h23
  5. Problème de récursivité
    Par tazmania dans le forum C
    Réponses: 24
    Dernier message: 14/12/2005, 14h34

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