하위 문제 b에 원래 해결책을 입력했을 때. SICP에서 운동 2.29의 :SICP 연습 문제 2.29 혼란
(define (total-weight m)
(let ((left (left-branch m))
(right (right-branch m)))
(cond ((null? m) 0)
((not (pair? m)) m)
(else
(+ (total-weight (branch-structure left))
(total-weight (branch-structure right)))))))
다음과 같은 데이터로 테스트 :
인터프리터 (MIT/GNU 제도)의 내용으로 에러보고(define left1 (make-branch 5 8))
(define right1 (make-branch 7 10))
(define m1 (make-mobile left1 right1))
(define right2 (make-branch 1 3))
(define m2 (make-mobile left2 right2))
(define left0 (make-branch 12 m1))
(define right0 (make-branch 5 m2))
(define m0 (make-mobile left0 right0))
(total-weight m0)
"에 첫 번째 인수로 전달 된 개체 3, cdr이 올바른 유형이 아닙니다. " 내가 표현 다음 코드로
(let ((left (left-branch m))
(right (right-branch m)))
...)
을 제거 때 :
(define (total-weight m)
(cond ((null? m) 0)
((not (pair? m)) m)
(else
(+ (total-weight (branch-structure (left-branch m)))
(total-weight (branch-structure (right-branch m)))))))
프로그램은 괜찮 았는데 내가 혼란 가지고
;Value: 27
결과를 출력한다. 아무도이 문제에 대해 재판을하고 나를 도울 수 있습니까?
두 버전은 동일합니다. –
@Will 'let'을 사용하는 버전에서 'm'은 테스트 전에 사용됩니다. –
@ TeerDe. 나는 이제 내 겸손한 파이를 먹을거야. :) –