scip学習ノート

798 ワード

DrRacketをインストールし、コマンドバーにlang planet neil/sicpを入力すれば、scheme解釈器がある環境になります.
1.3は、3つの数のうちより大きい2つの数の和を返します.
> (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))))))
反復書き方