(wat-aro)

生きてます

2015-10-06から1日間の記事一覧

SICP 問題1.19

(define (fib n) (fib-iter 1 0 0 1 n)) (define (fib-iter a b p q count) (cond ((= count 0) b) ((even? count) (fib-iter a b (+ (square p) (square q)) (+ (square q) (* 2 p q)) (halve count))) (else (fib-iter (+ (* b q) (* a q) (* a p)) (+ (* …

SICP 問題1.18

対数的ステップ数の,二つの整数の乗算の反復的プロセスを生成する手続き (define (fast-* a b) (fast-*-iter a b 0)) (define (fast-*-iter a b sum) (cond ((= b 0) sum) ((even? b) (fast-*-iter (double a) (halve b) sum)) (else (fast-*-iter a (- b 1…

SICP 問題1.17

(define (* a b) (if (= b 0) 0 (+ a (* a (- b 1))))) ;; 末尾再帰にしてみた (define (* a b) (*iter a b 0)) (define (*iter a b sum) (if (= b 0) sum (*iter a (- b 1) (+ a sum)))) (define (double n) (* 2 n)) (define (halve n) (/ n 2)) ;; fast-e…

SICP 問題1.16

反復的べき上プロセスを生成する手続き (define (fast-expt b n) (fast-expt-iter b n 1)) (define (fast-expt-iter b count product) (cond ((= count 0) product) ((even? count) (fast-expt-iter (square b) (/ count 2) product)) (else (fast-expt-iter…