開発環境
計算機プログラムの構造と解釈[第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 コメント:
コメントを投稿