开发者

Scheme and let syntax

开发者 https://www.devze.com 2022-12-22 07:42 出处:网络
(define (Int开发者_如何学编程egral f a b N) ;define h as a constant (let((h (/ (- b a) N)))) (define (Term n)
 (define (Int开发者_如何学编程egral 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))))  

This code produces an error r5rs:body: no expression in body in: (r5rs:body) Could you please help?


You misplaced the braces after the let. After you defined a constant in let the code that uses the constant has to be inside of the let's scope. Hence your error about missing the body of the expression.

Here is the corrected code:

(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)))))

BTW, you still need to define the sum function.

0

精彩评论

暂无评论...
验证码 换一张
取 消