2014-07-09 3 views
0

나는 sicp를 공부하고있다. 이 질문은 예 1.3입니다. 이 코드가 왜 문제인지 이해할 수 없습니다. 제발 도와주세요 .. TT이 제도 코드가 잘못된 것입니까?

여기 코드가 있습니다. cond위한

(define (test a b c) 
     (cond ((and (< a b) (< a c)) (+ (* b b) (* c c)) 
       (and (< b a) (< b c)) (+ (* a a) (* c c)) 
       (else (+ (* b b) (* c c))) 
     )) 

(test 1 2 3) 

오류 #에서 버퍼 # [입력 포트 (60)

조기 EOF 왼쪽 [표 61 # [버퍼 (17)] 166]이다

+0

괄호가 누락 된 것 같습니다. – drum

+0

mg ~ !! 네가 옳아!! 고맙습니다. – user3818646

답변

2

내 구문 잘못된 것입니다. 다음은 올바른 구문과 동일한 코드입니다.

(define (test a b c) 
    (cond ((and (< a b) (< a c)) (+ (* b b) (* c c))) 
     ((and (< b a) (< b c)) (+ (* a a) (* c c))) 
     (else (+ (* b b) (* c c))))) 

그러나 코드는 여전히 잘못되었습니다. 왜 볼 수 있니? (힌트 : else 분기 란 무엇을 의미하며, 어떤 표현식이 있어야합니까?)

+0

고정 코드입니다. 고맙습니다 !! 그러나 나는 아직도 잘못되는 것을 이해하지 못한다. – user3818646

+0

'c'가 가장 작은 숫자로 테스트하십시오. –

+0

oops !! (else (+ (* a a) (* b b)))))) 나는 그것을 놓쳤다 !! 정말 고맙습니다 !! – user3818646

1

누락 된 괄호.

(define 
    (test a b c) 
    (cond 
    ((and (< a b) (< a c)) (+ (* b b) (* c c))) 
    ((and (< b a) (< b c)) (+ (* a a) (* c c))) 
    (else (+ (* b b) (* c c)))) 
+0

parantheses .. ToT thanks. 감사합니다. :) – user3818646