Fonction qui detecte circularité sous LISP

Fermé
djbideboy Messages postés 244 Date d'inscription mardi 13 juin 2006 Statut Membre Dernière intervention 3 décembre 2018 - 28 oct. 2010 à 12:31
djbideboy Messages postés 244 Date d'inscription mardi 13 juin 2006 Statut Membre Dernière intervention 3 décembre 2018 - 30 oct. 2010 à 14:28
Bonjour,
Voila ca fait 2 semaine que je me prend la tete et je n'arrive pas à faire cet exo je dois créer une fonction qui détecte une circularité

Ecrire la fonction récursive circulaire qui détecte qu'une liste plate (sans sous-listes) est circulaire par son début.

Code :

(setq liste '(a b c))
(rplacd (cddr liste) liste)

(circulaire liste) => t
(circulaire '(a b c a b c)) => nil

Utilisez la fonction eq, qui compare deux adresses.

voila ce que j'ai pondu
mais ca ne marche pas
merci de m'expliquer
Code :

(defun circulaire (liste &aux frst)
(setq frst (car liste))
(atom (liste) nil)
(cond
((eq (cadr liste) frst) t)
((circulaire (cdr liste))) ))

je sais que ma fonction est fausse puisque la valeur frst change à chaque appel recursif
je ne dois utiliser la fonction let pour l'instant
Merci de m'aider c'est moi qui tourne en rond et non la liste
:( :(


1 réponse

djbideboy Messages postés 244 Date d'inscription mardi 13 juin 2006 Statut Membre Dernière intervention 3 décembre 2018 13
30 oct. 2010 à 14:28
personne de m'aider
0