Salut tout le monde !
Je dois réaliser une fonction qui me donne le énième cdr d'une liste. Cette fonction doit être récursive bien sur.
J'ai déjà fait une première version mais pas du tout récursive :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 (defun recup (x liste) (cond ((atom liste) 0) ((equal x 0) (print liste)) ((if (< x 0) nil)) ((equal x 1)(cdr liste)) ((equal x 2)(cddr liste)) ((equal x 3)(cdddr liste)) ((equal x 4)(cddddr liste)) ((equal x 5)(cdr(cddddr liste))))) recupQuand a réaliser une deuxième version mais récursive...je bloque
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 (recup 2 '(a b c)) (c) (recup -1 '(a b c)) nil (recup 4 '(a b c)) nil
J'ai quelque piste mais je vois pas trop comment faire.
Je devrais peut être utiliser un tant que et me servir de la fonction prédéfini length....
Est-ce que quelqu'un pourrait m'aider a monter ma fonction ?
Partager