【发布时间】:2014-12-14 19:16:49
【问题描述】:
我的第一个问题:D
我想写一个函数,根据输入的数字和术语给我一个总和。
我现在有这个:
(define series (lambda (n a-term)
(if (= n 0)
0
(+ a-term (series (- n 1) a-term)))))
我想输入一个自然数n(0 到n 的总和),我想输入一个a-term
例如(+ n 1) 或(sqr(n))。 a-term 基本上说明了如何计算总和。
我收到一条错误消息,提示 +: expects a number as 1st argument, given (lambda (a1) ...)
所以基本上它在这里期望一个术语:(+ a-term (series (- n 1) a-term))))) 是一个数字,但为什么它不是一个数字?我的意思是,如果我为 n 输入一个数字,为什么它不为一个术语返回一个数字?
一个有效的调用将是 (series 10 (lambda (n) (sqr(n)))) 。结果应该是不超过 10 (385) 的所有平方数之和。
另一个例子是(series 100 (lambda (n) n))。
结果将是 5050 = 从 0 到 100 的所有数字的总和
我希望你能理解我的问题,并为我的英语不好感到抱歉
【问题讨论】:
-
你能举一个例子说明你如何用一些参数调用
series以及预期的结果是什么? -
当然!在上述问题中编辑了一个示例