Bonjour à vous tous,
Je comprend pas comment marche la recursivite avec les listes.
J'ai bien vue l'explication http://pcaboche.developpez.com/artic...s/?page=page_1
mais ce n'est pas expliqué.
j'espere que vous pourrez m'expliquer,
@+ Seb
Bonjour à vous tous,
Je comprend pas comment marche la recursivite avec les listes.
J'ai bien vue l'explication http://pcaboche.developpez.com/artic...s/?page=page_1
mais ce n'est pas expliqué.
j'espere que vous pourrez m'expliquer,
@+ Seb
Comme tu as vu dans le tuto de pcaboche,
une liste est représentée [PremierElement|ResteDeLaListe]
il suffit de rappeller le prédicat (celui que tu veux appeller sur les éléments de la liste) avec ResteDeLaListe.
ex:
Pense à traîter la liste vide !
Code : Sélectionner tout - Visualiser dans une fenêtre à part pred([A|R]):- traitment(A),pred(R).
Pas sûr pour la syntaxe, mais l'idée est là.
a+
Wer nicht probiert, verliert !!
Merci pour ton message mais par exemple pour :
si on a :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 member(X,[X|Y]). member(X,[Y|Ys]):-member(X,Ys).
Je ne vois pas comment on peut dérouler cela ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 member(X,[1,2,3,4,5]). member(5,[1,2,5,4,5]). member(3,[1,2,3,4,5]).
Visiblement, il faut reprendre les bases du langage. C'est par là que ça se passe: http://pcaboche.developpez.com/artic.../presentation/
Ensuite, jète un oeil à la programmation en Prolog:
http://pcaboche.developpez.com/artic...mation_prolog/
A ce moment là, tu seras à même de comprendre le parcours de listes.
Bref, il suffit de suivre les articles dans l'ordre:
http://pcaboche.developpez.com/
"On en a vu poser les armes avant de se tirer une balle dans le pied..."
-- pydévelop
Derniers articles:
(SQL Server) Introduction à la gestion des droits
(UML) Souplesse et modularité grâce aux Design Patterns
(UML) Le Pattern Etat
Autres articles...
Le problème il est là justement :
Ce code est incorrect.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 member(X,[X|Y]). member(X,[Y|Ys]):-member(X,Ys).
Il faut ecrire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 % Aucun élément n'est membre de la liste vide % On s'arrête, pas la peine de continuer member(_,[]) :- !, fail. % si la liste commence par l'élément cherché, on a gagné, pas la peine de continuer member(X, [X | _]) :- !. % sinon, on regarde s'il est élément du reste de la liste member(X,[_|Ys]):-member(X,Ys).
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
"Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, ça vous changera les idées !
Ma page Prolog
Mes codes sources commentés
Mon avatar : La Madeleine à la veilleuse de Georges de La Tour
Petite précision: c'est plus une implémentation de memberchk/2 (1 solution si X appartient à la liste, 0 sinon) que de member/2 (autant de solutions que de X dans la liste).
"On en a vu poser les armes avant de se tirer une balle dans le pied..."
-- pydévelop
Derniers articles:
(SQL Server) Introduction à la gestion des droits
(UML) Souplesse et modularité grâce aux Design Patterns
(UML) Le Pattern Etat
Autres articles...
Tout à fait, je n'ai pas fait attention à ce distingo.
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
"Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, ça vous changera les idées !
Ma page Prolog
Mes codes sources commentés
Mon avatar : La Madeleine à la veilleuse de Georges de La Tour
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager