J'ai besoin d'écrire une fonction récursive qui imprime deux fois les éléments d'une liste. Par exemple, rdouble '(1 2 3) imprimerait (1 1 2 2 3 3) et rdouble' (1 (2 3) 4) imprimerait (1 1 (2 2 3 3) 4 4).Comment puis-je imprimer deux fois les éléments d'une liste de manière récursive?
Jusqu'à présent, j'ai:
(defun rdouble(struct)
(cond
((atom struct) struct)
(t (cons (rdouble (car struct)) (cons (car struct)
(rdouble (cdr struct))
)))))
Cela fonctionne très bien pour le premier exemple, mais imprime
(1 1 (2 2 3 3) (2 3) 4 4)
pour le deuxième exemple. Comment puis-je continuer à imprimer deux fois chaque élément sans les réimprimer (2 3)? Qu'est-ce que je fais de mal et comment puis-je le réparer?
Quand vous dites, « print », voulez-vous dire « retour »? Et si c'est devoirs, vous devriez ajouter la balise "devoirs". –
Oui, je veux dire retour ... désolé pour le tag, c'est ma première fois sur le forum ... –
Pas de problème. Bienvenue dans le débordement de la pile! –