(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))))
Run Code Online (Sandbox Code Playgroud)
这段代码产生一个错误r5rs:body:身体中没有表达式:(r5rs:body)你能帮忙吗?
在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)))))
Run Code Online (Sandbox Code Playgroud)
顺便说一下,你仍然需要定义sum函数.