Bonjour, je dois écrire une fonction récursive qui détecte la circularité d'une liste plate par son début. J'utilise "eq" pour tester l'égalité de deux adresses mais ça ne suffit pas.
voici les spécifications : la liste (x y z x y z) renvoie nil, lorsque la liste est circulaire (avec rplaca ou rplacd) elle renvoie "t".
Le problème est que lorsque la liste est circulaire j'ai un débordement de pile. Je ne comprends pas pourquoi.
(defun circularite (liste &optional test)
(setq test liste)
(cond
((not liste ) nil)
((eq (cdr liste) test) t)
((circularite (cdr liste)))))
merci beaucoup
Partager