나는 현재 SICP의 운동 1.29 일하고 있어요, 내 프로그램은 나에게 다음과 같은 오류주고 유지 : 나는 racket
사용하고 있는데 코드 여기+ : 두 번째 인수로 유형 <number>이 필요합니다. # <void>;
+: expects type <number> as 2nd argument, given: #<void>; other arguments were: 970299/500000
을 것 :
(define (cube x)
(* x x x))
(define (integral2 f a b n)
(define (get-mult k)
(cond ((= k 0) 1)
((even? k) 4)
(else 2)))
(define (h b a n)
(/ (- b a) n))
(define (y f a b h k)
(f (+ a (* k (h b a n)))))
(define (iter f a b n k)
(cond ((> n k)
(+ (* (get-mult k)
(y f a b h k))
(iter f a b n (+ k 1))))))
(iter f a b n 0))
(integral2 cube 0 1 100)
I을 "2 인자"를 추측하는 것은 현재 반복과 미래 반복을 추가하는 곳을 가리 킵니다. 그러나 왜 두 번째 인수가 숫자를 반환하지 않는지 이해할 수 없습니다. 누구든지이 오류를 해결하는 방법을 알고 있습니까?
당신이 제시하는 코드가 자체 포함되어있는 것이 가장 좋기 때문에'cube'의 정의를 포함 시켜서 예제가 실행 가능해야합니다. –
h는 상수이며 원하는 b와 n의 값을 포함하는 클로저에 정의됩니다. 당신의 정의는 인수를 사용하지 않기 위해 다시 쓰여질 수 있습니다. y는 k 만 필요하고 iter는 k와 n 만 필요합니다. iter에서 n = k 인 경우를 포기했고 알고리즘의 일부분 (* (/ h 3) sum-terms)을 잊어 버렸습니다 – WorBlux