(define (Integral f a b N)
;define h as a constant
(let((h (/ (- b a) N))))
(define (Term n)
(* (/ h 3) (+ (* 2 (f (+ a (* 2 (* n h)))))
(* 4 (f (+ a (* 2 (* (- n 1) h)))))
)
))
(+ (* (/ h 3) (+ (f a) (f b))) (sum Term a next (/ N 2.0))))
此代码产生错误 r5rs:body:身体中没有表情:(r5rs:body) 你能帮忙吗?
答案 0 :(得分:6)
在let之后你放错了方括号。在你定义一个常量后,使用常量的代码必须在let的范围内。因此,您错过了表达式的正文。
以下是更正后的代码:
(define (Integral f a b N)
; define h as a constant
(let ((h (/ (- b a) N)))
(define (Term n)
(* (/ h 3) (+ (* 2 (f (+ a (* 2 (* n h)))))
(* 4 (f (+ a (* 2 (* (- n 1) h))))))))
(+ (* (/ h 3) (+ (f a) (f b))) (sum Term a next (/ N 2.0)))))
顺便说一句,你还需要定义sum函数。