Lambda 输入数字和期限的方案总和
我的第一个问题:D 我想写一个函数,根据输入的数字和项给我一个和 我现在有这个: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基本上说明了如何计算总和 我得到一个错误,表示+:需要一个数字作为
(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