연습문제1.1
> 10
10
> (+ 5 3 4)
12
> (/ 6 2)
3
> (+ (* 2 4)(- 4 6))
6
> (define a 3)
> (define b (+ a 1))
> (+ a b (* a b))
19
> (= a b)
false
> (if (and (> b a) (< b (* a b)))
b
a)
4
> (cond ((= a 4) 6)
((= b 4) (+ 6 7 a))
(else 25))
16
> (+ 2 (if (> b a) b a))
6
> (* (cond ((> a b) a)
((< a b) b)
(else -1))
(+ a 1))
16
연습문제1.2
(/ (+ 5 4 (- 2 ( - 3 (+ 6 (/ 4 5))))) (* 3 (- 6 2) (- 2 7)))
-0.246
연습문제1.3
(define (onethird a b c)
(+ (cond ((> a b) (square a))
(else (square b)))
(cond ((and (> a b) (> b c)) (square b))
((and (< a b) (> a c)) (square a))
(else (square c))
)
)
)
연습문제1.4
> (define (a-plus-abs-b a b)
((if (> b 0) + -) a b))
> (a-plus-abs-b 1 2)
3
> (a-plus-abs-b 1 -2)
3
>
연습문제1.5
인자 먼저 계산하는 실행기의 결과: 0
이유: if 구문에서 true가 되어, 바로 0이라는 결과를 반환하기 때문이다.
정의한 대로 계산하는 실행기의 결과: (무한 루프)
이유: (p) 함수의 정의를 찾기 위해 무한 루프를 돌고, 결국 결과를 반환하지 못한다.
연습문제1.6
cond는 잇단식(sequence of expression)을 계산하고 마지막 식의 값을 돌려주므로 무한 루프에 빠지는 반면, if는 참이 아닐 때만 alternative를 계산해서 제곱근을 구할 수 있다.
연습문제1.7
> (define (good-enough?1 guess x)
(< (abs (- (improve guess x) guess)) 0.001))
> (define (sqrt-iter2 guess x)
(if (good-enough?1 guess x)
guess
(sqrt-iter2 (improve guess x)
x)))
> (define (sqrt3 x)
(sqrt-iter2 1.0 x))
0을 넣었을 때 전보다 오차가 적었다.
컴퓨터 프로그램의 구조와 해석
상세보기
해럴드 애빌슨 지음 |
인사이트 펴냄
프로그래밍 뼈대를 구성하는 기술을 설명한『컴퓨터 프로그램의 구조와 해석』. 이 책은 소프트웨어...《컴퓨터 프로그램의 구조와 해석》은 프로시저를 써서 요약하는 법과 데이터를 요약해서 표현력 끌어올리기...