Lambda 输入数字和期限的方案总和

Lambda 输入数字和期限的方案总和,lambda,sum,scheme,Lambda,Sum,Scheme,我的第一个问题:D 我想写一个函数,根据输入的数字和项给我一个和 我现在有这个: (define series (lambda (n a-term) (if (= n 0) 0 (+ a-term (series (- n 1) a-term))))) 我想输入一个自然数n(从0到n)和一个a项 例如(+n1)或(sqr(n))。a-term基本上说明了如何计算总和 我得到一个错误,表示+:需要一个数字作为

我的第一个问题:D

我想写一个函数,根据输入的数字和项给我一个和

我现在有这个:

(define series  (lambda (n a-term)
             (if (= n 0)
                 0
             (+ a-term (series (- n 1) a-term)))))
我想输入一个自然数
n
(从0到
n
)和一个
a项

例如
(+n1)
(sqr(n))
a-term
基本上说明了如何计算总和

我得到一个错误,表示
+:需要一个数字作为给定的第一个参数(lambda(a1)…)
所以基本上它期望a-term在这里:
(+a-term(series(-n1)a-term‘‘‘)’)
是一个数字,但为什么它不是一个数字呢?我的意思是,如果我为n输入一个数字,为什么它不为a学期返回一个数字呢

有效的调用应该是
(系列10(lambda(n)(sqr(n)))
。结果应该是所有平方数的总和,最大为10(385)

另一个例子可以是
(系列100(lambda(n)n))
。 结果将是5050=从0到100的所有数字之和


我希望您能理解我的问题,并为我糟糕的英语表示歉意。以
n
作为参数调用过程
aterm
,您需要将其表示为
(aterm n)

然后

或者,更短

> (series 10 sqr)
385

你能举一个例子说明如何用一些参数调用
series
,以及预期的结果是什么吗?当然!编辑了上述问题中的一个例子
> (series 10 (lambda (n) (sqr n)))
385
> (series 10 sqr)
385