【问题标题】:Syntax error on Scheme tail-recursive functionScheme尾递归函数的语法错误
【发布时间】:2018-03-22 09:20:01
【问题描述】:

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

示例:计算 x^3 + 2x^2 + 5,因此用户将在函数调用 (poly '(5 0 2 1) 1) 中传递列表 '(5 0 2 1) 和类似 1 的 x .

我不知道为什么会出现以下错误:

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))))

【问题讨论】:

  • 请尽量自己做功课!你的 fix-my-code 问题跑题了。

标签: recursion scheme syntax-error


【解决方案1】:

最后一行poly-assistant 之前需要一个左括号。

在 Scheme 中,函数应用程序以左括号开头。而if 需要 2 或 3 个操作数。

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

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

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

【讨论】:

  • 谢谢,但运行后我收到以下错误。申请:不是程序;期望一个可以应用于给定参数的过程:(0 4 1) arguments...:
  • 无视。我实际上发现了错误,您使用更好的编辑器是对的。
猜你喜欢
  • 1970-01-01
  • 2013-10-05
  • 2015-12-10
  • 1970-01-01
  • 1970-01-01
  • 2019-11-16
  • 1970-01-01
  • 2017-06-18
相关资源
最近更新 更多