Scheme petit probleme

alios -  
 amigo -
Bonjour,
J'ai un problèlme, il s'agit d'un programme en scheme.Voila la question :

-Donner une définition récursive de la fonction Appartient(élément, liste), qui retourne VRAI si
l’élément est dans la liste et FAUX sinon.

J'essaie alors un programme:

(define appartient;
(lambda (l e); l liste d'atome e element de la liste
(if (= e (cdr l)) 'oui 'non )))

j'essai de tester, ça ne marche pas.En plus,là je ne m'occupe que du reste de la liste alors quand j'essaie de mettre un 2 ième "if.." pour le cas du premier élément de la liste , on me dit qu'il ya trop d'expression.C'est quoi le problème ?Merci.

1 réponse

amigo
 
bonjour,

ecrit comme ça , ça fonctionne

(define appartient ;
(lambda (l e) ; l liste d'atome e element de la liste
(if (= (length l) 0) #f ; si l est vide renvoie #f(False)
(if (= e (car l)) #t ; sinon si e = premier element renvoie #t(True)
(appartient(cdr l) e) ; sinon appel appartient recursivement avec l sans son premier element
))))
;test
(define l (list '1 2 3 4 5 6 7 8 9))
(appartient l 5) ; -> #t
(appartient l 0) ; -> #f
0