開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Scheme (プログラミング言語)
- Gauche (処理系)
計算機プログラムの構造と解釈(Gerald Jay Sussman(原著)、Julie Sussman(原著)、Harold Abelson(原著)、和田 英一(翻訳)、ピアソンエデュケーション、原書: Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)(SICP))の1(手続きによる抽象の構築)、1.2(手続きとその生成するプロセス)、1.2.2(木構造再帰)、問題 1.11.を解いてみる。
その他参考書籍
- Instructor's Manual to Accompany Structure & Interpretation of Computer Programs
- プログラミングGauche (Kahuaプロジェクト (著), 川合 史朗 (監修), オライリージャパン)
問題 1.11.
コード(BBEdit, Emacs)
sample.scm
#!/usr/bin/env gosh ;; -*- coding: utf-8 -*- ;; 再帰的プロセス (define (f n) (if (< n 3) n (+ (f (- n 1)) (* 2 (f (- n 2))) (* 3 (f (- n 3)))))) ;; 反復的プロセスに変換 (define (g n) (g-iter 2 1 0 n)) (define (g-iter a b c counter) (if (= counter 0) c (g-iter (+ a (* 2 b) (* 3 c)) a b (- counter 1))))
入出力結果(Terminal, REPL(Read, Eval, Print, Loop))
$ gosh gosh> (load "./sample.scm") #t gosh> (f 1) 1 gosh> (f 2) 2 gosh> (f 3) 4 gosh> (f 4) 11 gosh> (f 5) 25 gosh> (f 10) 1892 gosh> (f 20) 10771211 gosh> (f 30) 61354575194 gosh> (f 40) ^C*** UNHANDLED-SIGNAL-ERROR: unhandled signal 2 (SIGINT) Stack Trace: _______________________________________ 0 n 1 (f (- n 1)) At line 8 of "./sample.scm" 2 (f (- n 1)) At line 8 of "./sample.scm" 3 (f (- n 1)) At line 8 of "./sample.scm" 4 (f (- n 1)) At line 8 of "./sample.scm" 5 (f (- n 2)) At line 10 of "./sample.scm" 6 (f (- n 1)) At line 8 of "./sample.scm" 7 (f (- n 2)) At line 10 of "./sample.scm" 8 (f (- n 2)) At line 10 of "./sample.scm" 9 (f (- n 1)) At line 8 of "./sample.scm" 10 (f (- n 2)) At line 10 of "./sample.scm" 11 (f (- n 1)) At line 8 of "./sample.scm" 12 (f (- n 1)) At line 8 of "./sample.scm" 13 (f (- n 2)) At line 10 of "./sample.scm" 14 (f (- n 1)) At line 8 of "./sample.scm" 15 (f (- n 3)) At line 12 of "./sample.scm" 16 (f (- n 1)) At line 8 of "./sample.scm" 17 (f (- n 2)) At line 10 of "./sample.scm" 18 (f (- n 1)) At line 8 of "./sample.scm" 19 (f (- n 1)) At line 8 of "./sample.scm" 20 (f (- n 1)) At line 8 of "./sample.scm" 21 (f (- n 2)) At line 10 of "./sample.scm" 22 (f (- n 1)) At line 8 of "./sample.scm" 23 (f (- n 2)) At line 10 of "./sample.scm" 24 (f (- n 1)) At line 8 of "./sample.scm" 25 (f (- n 1)) At line 8 of "./sample.scm" 26 (f (- n 1)) At line 8 of "./sample.scm" 27 (f (- n 1)) At line 8 of "./sample.scm" gosh> (g 1) 1 gosh> (g 2) 2 gosh> (g 3) 4 gosh> (g 4) 11 gosh> (g 5) 25 gosh> (g 10) 1892 gosh> (g 20) 10771211 gosh> (g 30) 61354575194 gosh> (g 40) 349485574054925 gosh> (g 50) 1990726300381593467 gosh> (g 100) 11937765839880230562825561449279733086 gosh> (exit) $
0 コメント:
コメントを投稿