Désolé, c'est encore scheme

Fermé
alios - 27 févr. 2008 à 15:51
 amigo - 27 févr. 2008 à 19:39
Bonjour,
je vous avais demandé de l'aide sur un programme scheme et vous m'avez bien aidé.Mais vous
m'avez donné la réponse en scheme alors q'en réalité c'etait en algorithme d'après la question
(en réalité c'est plutôt de ma faute parce que je vous demandais de me dire ce qui n'allait pas
dans mon programme en scheme donc vous m'avez répondue en scheme,merçi Amigo).
En scheme ça va j'arrive à comprendre mais en algo bof.je vous remet la question vous pouvez
m'aidersur 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.
Merçi.

1 réponse

bonsoir,

en algo je n'assure pas, mais je vais essayer, il faudra traduire.

fonction appartient (liste atom) ; la fonction et ses arguments
si (longueur liste) = 0 retourne FAUX ; test si liste est vide
sinon si e = (premier element de liste) retourne VRAI; test si e=premier élément de la liste
sinon appel (appartient (liste sans son premier élément) e ) ; appel recursif de la fonction
jusqu'a ce que e = premier élément de liste ou liste = null.

(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; variante (if (null? l) #f 
        (if (= e (car l)) #t ; sinon si e = premier element renvoie #t;
        (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