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

Algorithmes et structures de données Discussion :

Fonction récursive : à l'aide!


Sujet :

Algorithmes et structures de données

  1. #1
    Membre à l'essai
    Femme Profil pro
    Doctorante
    Inscrit en
    Mars 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Mars 2007
    Messages : 46
    Points : 18
    Points
    18
    Par défaut Fonction récursive : à l'aide!
    Bonjour,
    Je poste que très rarement des questions sur le forum, car souvent le problème qu'on se pose a déjà été traité par un autre. Mais là je suis complètement perdu. Mon cerveau est dans une boucle infinie.
    Donc j'en appelle à vos compétences. (Graissage de patte : fait)

    Voilà mon problème.
    J'ai une chaîne de ce type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maChaine = "être complètement|totalement|absolument désemparée|stupide"
    Les espaces représentent donc des paradigmes, les pipe sont les mots possibles dans ce paradigme.
    On ne sait pas à priori ni combien on peut avoir de paradigme, ni combien de mots.

    Je voudrais à partir de ce type de chaîne créer toutes les phrases possibles
    être complètement désemparée
    être totalement désemparée
    être absolument désemparée
    être complètement stupide
    .....


    Je sais qu'il faut utiliser une fonction récursive mais mon niveau d’algorithmique est trop faible pour que mon cerveau suive. C'est de la logique pourtant!

    Bref j'ai besoin de vous.

    Merci d'avance

    PS: actuellement je le programme en Perl mais quelque soit le langage toute proposition est la bienvenue.

    Lili

  2. #2
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Salut !
    Ce que tu souhaites faire n'est rien de plus qu'un produit cartésien sur les ensembles suivants : {être} × {complètement, totalement, absolument} × {désemparée, stupide}.

    Définie dans un premier temps une fonction produit qui prend deux ensembles (liste, collection, tableau ...) de mots et retourne son produit cartésien (pour chaque mot1 de ens1, pour chaque mot2 de ens2, résultat ← resultat + (mot1 + " " + mot2), fin pour, fin pour).

    Ensuite, traite la phrase deux par deux (E × F × G = (E × F) × G) (éventuellement par récurrence, mais ça n'apporte pas grand chose).

    Cdlt,

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur R&D en apprentissage statistique
    Inscrit en
    Juin 2009
    Messages
    447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur R&D en apprentissage statistique

    Informations forums :
    Inscription : Juin 2009
    Messages : 447
    Points : 752
    Points
    752
    Par défaut
    Il faut te poser la question "en quoi la procédure est récursive ?". Comment l'indique prgasp77 tu peux voir le problème comme la création du produit cartésien de 3 ensembles (ou listes): ["être"], ["complètement","totalement","absolument"], ["désemparée", "stupide"].

    Une procédure récursive va consister, par exemple, à appeler une fonction qui prend en argument une liste de listes et une chaine de caractère.

    La fonction parcours les éléments de la première liste et pour chacun d'entre eux l'ajoute à la chaîne de caractère puis se rappelle elle même avec les listes suivante et la nouvelle chaine de caractère. La fonction s'arrête lorsque que la liste de listes et vide et imprime alors à l'écran la chaine de caractère obtenue.

  4. #4
    Membre à l'essai
    Femme Profil pro
    Doctorante
    Inscrit en
    Mars 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Mars 2007
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    Merci!
    En effet, le produit cartésien est totalement indiqué
    Ne connaissant pas j'ai effectué une petite recherche et j'ai trouvé la solution à mon problème ici
    http://fr.softuses.com/172759

    Merci encore

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

Discussions similaires

  1. Aide pour une fonction récursive.
    Par fred61 dans le forum Débuter
    Réponses: 13
    Dernier message: 21/01/2015, 09h39
  2. Réponses: 3
    Dernier message: 30/05/2014, 23h04
  3. Recherche à l'aide d'une fonction récursive
    Par Phoenix89 dans le forum Shell et commandes GNU
    Réponses: 32
    Dernier message: 24/04/2014, 11h58
  4. Fonction récursive renvoi sur page d'erreur
    Par peck dans le forum Langage
    Réponses: 1
    Dernier message: 23/12/2005, 11h08
  5. Problème de fonction récursive avec un TcxDBTreeList
    Par isachat666 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 05/12/2005, 14h12

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