1 votes

Récursion Lisp : ne pas appeler les fonctions précédentes

J'essaie de faire en sorte qu'une fonction compare le premier argument d'un argument passé à une valeur, puis si c'est vrai, exécute une certaine fonction, puis appelle récursivement la même fonction.

(defun function (expression)
  (cond
    ((equal (first expression) "+")
     (progn (print "addition")
            (function (rest expression))))))

Pour une raison quelconque, cependant, il ne le parcourt que de manière récursive et ne l'imprime pas. Merci.

0voto

themis Points 772

Vous voulez peut-être dire :

(defun function (expression)
  (cond (expression
         (cond (equal (first expression) "+")
               (print "addition")))
         (function (rest expression)))))

l'original ne récure que si (première expression) est "+". et n'effectue pas non plus de vérification de l'absence de valeur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X