2015年1月28日水曜日

開発環境

計算機プログラムの構造と解釈[第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.2(木構造再帰)、問題 1.11.を解いてみる。

その他参考書籍

問題 1.11.

コード(BBEdit, Emacs)

sample11.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)
  (define (iter a b c count)
    (if (= count 0)
        c
        (iter (+ a (* 2 b) (* 3 c))
              a
              b
              (- count 1))))
  (iter 2 1 0 n))

(print (f 0))
(print (f 1))
(print (f 2))
(print (f 3))
(print (f 10))

(print (g 0))
(print (g 1))
(print (g 2))
(print (g 3))
(print (g 10))

入出力結果(Terminal(gosh), REPL(Read, Eval, Print, Loop))

$ ./sample11.scm
0
1
2
4
1892
0
1
2
4
1892
$

0 コメント:

コメントを投稿