Scheme 如何使用累积(方案)求解以下方程

Scheme 如何使用累积(方案)求解以下方程,scheme,Scheme,我正试图解决以下问题(有一个公式,所以我打印并上传了它) () 使用累积: (定义(累加组合器空值项a和b) (如果(>AB)空值 (组合器(项a)(累积组合器空值项(下一个a)下一个b))) 但我几乎不知道怎么做。它应该看起来像 (定义(和函数f k).? 我不确定应该如何定义f(x+j*h),以便将变化的数字j(从0变为给定的数字k)放在其中……换句话说,我很迷茫 感谢您的快速回复。我正在为期中考试学习,我正试图学习前几年的期中考试,但我只是被困在这里。我知道如何使用累积和其中的所有内容

我正试图解决以下问题(有一个公式,所以我打印并上传了它)


()

使用累积:

(定义(累加组合器空值项a和b)
(如果(>AB)空值
(组合器(项a)(累积组合器空值项(下一个a)下一个b)))

但我几乎不知道怎么做。它应该看起来像
(定义(和函数f k).?
我不确定应该如何定义f(x+j*h),以便将变化的数字j(从0变为给定的数字k)放在其中……换句话说,我很迷茫


感谢您的快速回复。我正在为期中考试学习,我正试图学习前几年的期中考试,但我只是被困在这里。我知道如何使用累积和其中的所有内容,但我只是不知道如何进行f(x+jh)。我正在尝试以下方法:
(定义(和函数项a b h x)
(定义(下一个a)(+a1))
(定义(术语a)(术语(+x(*h a)))
(累计+0(术语a)a(下一个术语a)b))
但它不起作用。。。 换句话说,我不知道如何在术语中使用“下一个”(变化部分)。。
(如果我解释得很清楚,很抱歉-英语不是我的母语)

我不确定这是否是一个家庭作业问题,但无论如何,我会为您提供一些解决方法。为了简单起见,让我们假设我们的问题是找到j和k之间所有数字的平方和。您可以使用上面的累积函数来解决这个简单问题。您只需定义为这个问题定义组合器、术语和下一个函数,并定义最终的空值

这里的项函数应该计算每个j的平方。因此项将以j为参数,并返回j的平方作为结果。 (定义(术语j)(sqr j))

Next函数应该得到序列中的下一个j。 (定义(下一个j)(+j 1)

组合器函数应将两个术语组合在一起。 (定义(组合器t1 t2)(+t1 t2))

最后,null值表示停止条件,当我们累积了从j到k的所有值时,应该传递给combiner的最后一个值。在这种情况下,我们所要做的就是将其定义为零。 (定义空值0)

对于您的问题,除了术语“函数”之外,这些函数中的大多数都是相同的。 在这个问题中,术语函数是一个非常简单的函数,它只找到了所提供数字的平方。然而,在你的例子中,它不像找到j的平方那么简单,因为你定义了几个其他常数

希望这能帮助你解决这个问题


如果你需要更深入地了解这一点,你可能想看看SICP第2章中的累积问题。

我找到了答案。我想我是在过度思考算法(认为它比原来复杂得多),这导致我犯了许多愚蠢的错误

(define (accumulate combiner null-value term a next b)


(if (> a b) null-value


(combiner 
      (term a)
      (accumulate combiner null-value term (next a) next b))))


(define (sum-row term x h n)

  (accumulate + 0
              (lambda (t) (* (if (even? (- n t)) 1 -1)(term (+ x(* h t))))) 
              0 
              (lambda (t) (+ t 1))
              n))


(define (square x) (* x x))

(sum-row square 2 2 3)

; -4+16-36+64=40
; -f(2+0*2)=-4 f(2+1*2)=16 -f(2+2*2)=-36 f(2+3*6)=64

请不要写[已解决],而是选择正确答案