開発環境
計算機プログラムの構造と解釈[第2版](ハロルド エイブルソン (著)、ジュリー サスマン (著)、ジェラルド・ジェイ サスマン (著)、Harold Abelson (原著)、Julie Sussman (原著)、Gerald Jay Sussman (原著)、和田 英一 (翻訳)、翔泳社、原著: Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)(SICP))の第1章(手続きによる抽象の構築)、1.2(手続きとその生成するプロセス)、1.2.4(べき乗)、問題1.17.を取り組んでみる。
その他参考書籍
問題1.17.
コード(Emacs)
(begin (newline) (load "procedures.scm") (define double (lambda (x) (+ x x))) (define halve (lambda (x) (/ x 2))) (define n 0) (define * (lambda (a b) (set! n (+ n 1)) (if (= b 0) 0 (if (even? b) (* (double a) (halve b)) (+ a (* a (- b 1))))))) (define nums '(1 2 3 4 5 6 7 8 9 10)) (for-each (lambda (a) (for-each (lambda (b) (set! n 0) (display "(* ") (display a) (display " ") (display b) (display "): ") (display (* a b)) (display ", ") (display n) (newline)) nums)) nums) 'done)
入出力結果(Terminal(kscheme), REPL(Read, Eval, Print, Loop))
$ ksi < sample17.scm ksi> (* 1 1): 1, 3 (* 1 2): 2, 7 (* 1 3): 3, 11 (* 1 4): 4, 15 (* 1 5): 5, 23 (* 1 6): 6, 23 (* 1 7): 7, 35 (* 1 8): 8, 31 (* 1 9): 9, 47 (* 1 10): 10, 47 (* 2 1): 2, 3 (* 2 2): 4, 7 (* 2 3): 6, 11 (* 2 4): 8, 15 (* 2 5): 10, 23 (* 2 6): 12, 23 (* 2 7): 14, 35 (* 2 8): 16, 31 (* 2 9): 18, 47 (* 2 10): 20, 47 (* 3 1): 3, 3 (* 3 2): 6, 7 (* 3 3): 9, 11 (* 3 4): 12, 15 (* 3 5): 15, 23 (* 3 6): 18, 23 (* 3 7): 21, 35 (* 3 8): 24, 31 (* 3 9): 27, 47 (* 3 10): 30, 47 (* 4 1): 4, 3 (* 4 2): 8, 7 (* 4 3): 12, 11 (* 4 4): 16, 15 (* 4 5): 20, 23 (* 4 6): 24, 23 (* 4 7): 28, 35 (* 4 8): 32, 31 (* 4 9): 36, 47 (* 4 10): 40, 47 (* 5 1): 5, 3 (* 5 2): 10, 7 (* 5 3): 15, 11 (* 5 4): 20, 15 (* 5 5): 25, 23 (* 5 6): 30, 23 (* 5 7): 35, 35 (* 5 8): 40, 31 (* 5 9): 45, 47 (* 5 10): 50, 47 (* 6 1): 6, 3 (* 6 2): 12, 7 (* 6 3): 18, 11 (* 6 4): 24, 15 (* 6 5): 30, 23 (* 6 6): 36, 23 (* 6 7): 42, 35 (* 6 8): 48, 31 (* 6 9): 54, 47 (* 6 10): 60, 47 (* 7 1): 7, 3 (* 7 2): 14, 7 (* 7 3): 21, 11 (* 7 4): 28, 15 (* 7 5): 35, 23 (* 7 6): 42, 23 (* 7 7): 49, 35 (* 7 8): 56, 31 (* 7 9): 63, 47 (* 7 10): 70, 47 (* 8 1): 8, 3 (* 8 2): 16, 7 (* 8 3): 24, 11 (* 8 4): 32, 15 (* 8 5): 40, 23 (* 8 6): 48, 23 (* 8 7): 56, 35 (* 8 8): 64, 31 (* 8 9): 72, 47 (* 8 10): 80, 47 (* 9 1): 9, 3 (* 9 2): 18, 7 (* 9 3): 27, 11 (* 9 4): 36, 15 (* 9 5): 45, 23 (* 9 6): 54, 23 (* 9 7): 63, 35 (* 9 8): 72, 31 (* 9 9): 81, 47 (* 9 10): 90, 47 (* 10 1): 10, 3 (* 10 2): 20, 7 (* 10 3): 30, 11 (* 10 4): 40, 15 (* 10 5): 50, 23 (* 10 6): 60, 23 (* 10 7): 70, 35 (* 10 8): 80, 31 (* 10 9): 90, 47 (* 10 10): 100, 47 => done ksi> $
0 コメント:
コメントを投稿