Scheme尾递归函数的语法错误

时间:2017-10-10 20:44:50

标签: recursion scheme syntax-error

我正在创建一个尾递归函数,通过传递一系列系数和一个x值来评估多项式。

示例:评估x ^ 3 + 2x ^ 2 + 5,因此用户可以在函数调用中传递列表'(5 0 2 1)和x像1(poly'(5 0 2 1)1)

我无法弄清楚为什么我会收到以下错误:

  

if:语法错误:(if(null?(cdr lst))(+ total(car lst))   eval-poly-tail-helper((cdr lst)x(+(*(expt x n)(car lst))总)   (+ 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))))

1 个答案:

答案 0 :(得分:1)

你需要在最后一行poly-assistant之前留下一个左栏。

在Scheme中,函数应用程序以左边的paren开头。并且if需要2或3个操作数。

使用能够匹配括号的更好的编辑器(例如emacs)。

cdr之前的两个左括号看起来很可疑。您可能只需要一个。

学习使用Scheme调试器,或者至少添加调试打印。