可以安装DrRacket,并在命令栏输入 lang planet neil/sicp,就可以有scheme解释器的环境了。
1.3 返回三个数中较大两个数的和:
> (define (sunBigger a b c)
(define (min a b)
(if (> a b)
(b)
a))
(- (+ a b c) (min (min a b) c)))
> (sumBigger 1 2 3)
1.8
(define (iscube guess x)
(define (good-enough guess x)
(< (abs (- (* guess guess guess) x)) 0.001))
(define (improve guess x)
(/ (+ (/ x (* guess guess)) (* 2 guess)) 3))
(if (good-enough guess x)
guess
(improve guess x)))
表示scheme的括号真是蛋疼啊,调了好久都是括号问题,算法本身很简单。
1.11
递归写法
(define (fib n)
(if (< n 3) n
(+ (fib (- n 1)) (* 2 (fib (- n 2))) (* 3 (fib (- n 3))))))
迭代写法