開発環境
計算機プログラムの構造と解釈[第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.19.を取り組んでみる。
その他参考書籍
問題1.19.
コード(Emacs)
(begin (newline) (load "procedures.scm") (define fib (lambda (n) (fib-iter 1 0 0 1 n))) (define p1 (lambda (p q) (+ (expt p 2) (expt q 2)))) (define q1 (lambda (p q) (+ (* 2 p q) (expt q 2)))) (define fib-iter (lambda (a b p q count) (if (= count 0) b (if (even? count) (fib-iter a b (p1 p q) (q1 p q) (/ count 2)) (fib-iter (+ (* b q) (* a q) (* a p)) (+ (* b p) (* a q)) p q (- count 1)))))) (define nums '(0 1 2 3 4 5 6 7 8 9 10)) (for-each (lambda (n) (display n) (display ": ") (display (fib n)) (newline)) nums) 'done)
入出力結果(Terminal(kscheme), REPL(Read, Eval, Print, Loop))
$ ksi < sample19.scm ksi> 0: 0 1: 1 2: 1 3: 2 4: 3 5: 5 6: 8 7: 13 8: 21 9: 34 10: 55 => done ksi> $
0 コメント:
コメントを投稿