2017-10-10 8 views
0

Je crée une fonction récursive de queue qui évalue un polynôme en passant une liste de coefficients et une valeur x. Exemple: évaluer x^3 + 2x^2 + 5, donc l'utilisateur passerait la liste '(5 0 2 1) et un x comme 1 dans un appel fonctionnel (poly' (5 0 2 1) 1).Erreur de syntaxe sur la fonction de récurrence de queue de schéma

Je ne peux pas comprendre pourquoi je reçois l'erreur suivante:

if: bad syntax in: (if (null? (cdr lst)) (+ total (car lst)) eval-poly-tail-helper ((cdr lst) x (+ (* (expt x n) (car lst)) total) (+ 1 n)))

(define (poly lst x) 
    (poly-assistant lst x 0 0)) 


(define (poly-assistant lst x total n) 
    (if (null? (cdr lst)) 
     (+ total (car lst)) 
     poly-assistant((cdr lst) x (+ (* (expt x n) (car lst)) total) (+ 1 n)))) 
+0

S'il vous plaît essayer de faire vos devoirs par vous-même! Votre question fix-my-code est hors-sujet. –

Répondre

1

Vous avez besoin d'une paren gauche avant poly-assistant dans la dernière ligne.

Dans Scheme, les applications de fonction commencent par un parent gauche. Et if prend 2 ou 3 opérandes.

Utilisez un meilleur éditeur (par exemple, emacs) pouvant correspondre à la parenthèse.

Les deux parenthèses de gauche avant cdr semblent suspectes. Vous pourriez en avoir besoin d'un seul.

Apprenez à utiliser votre débogueur Scheme ou au moins ajoutez des impressions de débogage.

+0

Merci, mais je reçois l'erreur suivante après l'exécution. application: pas une procédure; attendu une procédure qui peut être appliquée aux arguments étant donné: (0 4 1) arguments ...: – Chriskt

+0

Ignorer. J'ai trouvé l'erreur et vous avez raison d'utiliser un meilleur éditeur. – Chriskt