SICP

区間二分法による零点の探索

function avg(x, y) { return (x + y) / 2; } function abs(x) { return (x >= 0) ? x : -x; } function zelo_point(f, neg, pos) { var mid = avg(neg, pos); return abs(pos - neg) < 0.001 ? mid : f(mid) < 0 ? zelo_point(f, mid, pos) : f(mid) > 0 ? …

不動点の探索

function abs(x) { return (x >= 0) ? x : -x; } function fixed(f, guess) { var next = f(guess); return abs(guess - next) < 0.001 ? next : fixed(f, next); } print(fixed(Math.cos, 1)); テキストのほうは、もちょっと長かったような。 テキスト欄外…

問題1.3

亀の歩みだ…

問題1.4

さっぱりわからん…

問題1.1

http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-10.html#%_sec_1.1.6以下、問題の(僕の)解答です。

問題1.2

http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-10.html#%_sec_1.1.6以下、問題の(僕の)解答です。

最大公約数問題

function gdc(a, b) { return (b == 0) ? a : gdc(b, (a % b)); } print(gdc(10, 4)); print(gdc(35, 21)); print(gdc(150, 36));

ifの評価と関数の評価

#!/usr/bin/env scheme (define (log name) (begin (display name) (newline) #t)) (define (f-test) (log "f-test")) (define (f-then) (log "f-then")) (define (f-else) (log "f-else")) (define (new-if x y z) (cond (x y) (else z))) (display (if (f-…

両替計算練習

#!/usr/bin/env rhino function car(a) { return a[0]; } function cdr(a) { var na = []; var i=1; for(; i