問題1.9、問題1.10 – SICP(計算機プログラムの構造と解釈)その4
問題1.9 再帰的プロセスと反復的プロセス 次の手続きは再帰的プロセスを生成する。 (define (+ a b) (if (= a 0) b (inc (+ (dec a) b)))) (+ 4 5) (inc (+ (dec 4) 5)) (inc (inc (+ (dec 3) 5))) (inc (inc (inc (+ (dec 2) 5)))) (inc (inc (inc (inc …続きを読む
問題1.9 再帰的プロセスと反復的プロセス 次の手続きは再帰的プロセスを生成する。 (define (+ a b) (if (= a 0) b (inc (+ (dec a) b)))) (+ 4 5) (inc (+ (dec 4) 5)) (inc (inc (+ (dec 3) 5))) (inc (inc (inc (+ (dec 2) 5)))) (inc (inc (inc (inc …続きを読む
問題1.8 立方根(cube root)を求める。 (define (cube x) (* x x x)) (define (square x) (* x x)) (define (improve guess x) (/ (+ (/ x (square guess)) (* guess 2.0)) 3.0)) (define (cube-root-iter old-guess new-guess …続きを読む
問題1.6 (new-if (good-enough? guess x) guess (sqrt-iter (improve guess x) x)) new-if は通常の手続きのため、作用的順序の評価では引数が先に評価されるので、 (good-enough? guess x) が真を返す場合でも (sqrt-iter (improve guess x) x) まで評価されるので、無限ループに陥…続きを読む
以前読みかけて挫折していた SICP にもう1度挑戦するために今度は blog でメモを取りながら続けてみる。 問題1.2 (/ (+ 5 4 (- 2 (- 3 (+ 6 (/ 4 5))))) (* 3 (- 6 2) (- 2 7))) ;=> -37/150 問題1.3 (define (square a) (* a a)) (define (sum-of-squares a b) …続きを読む