(define generalized-triangular\n (lambda (input n)\n (if (= n 1)\n 1\n (+ (input n) (generalized-triangular (- n 1))))))\nRun Code Online (Sandbox Code Playgroud)\n\n该程序旨在以数字和函数作为输入并执行以下操作。
\n\nf(1) + f(2) + f(3)+ \xe2\x80\xa6 + f(N).\nRun Code Online (Sandbox Code Playgroud)\n\n输入示例如下:
\n\n(generalized-triangular square 3)\nRun Code Online (Sandbox Code Playgroud)\n\n错误消息:
\n\n(define generalized-triangular\n (lambda (input n)\n (if (= n 1)\n 1\n (+ (input n) (generalized-triangular (- n 1))))))\nRun Code Online (Sandbox Code Playgroud)\n
错误非常明显 -if表单在条件之后只能有两个部分 - 结果(如果条件为真)和替代(如果条件为假)。也许你的意思是这个?
(if (= n 1)
1
(+ (input n) (generalized-triangular input (- n 1))))
Run Code Online (Sandbox Code Playgroud)
我从原始代码中移出了input,它位于错误的位置,因为对 的调用generalized-triangular需要两个参数,并且顺序正确。
郑重声明:如果您需要在后续或替代中执行多个表达式(您的问题不是这种情况,但了解它很有用),那么您必须将它们打包在 a 中begin,例如:
(if <condition> ; condition
(begin ; consequent
<expression1>
<expression2>)
(begin ; alternative
<expression3>
<expression4>))
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用 a cond,它具有隐式begin:
(cond (<condition> ; condition
<expression1> ; consequent
<expression2>)
(else ; alternative
<expression3>
<expression4>))
Run Code Online (Sandbox Code Playgroud)