From 8ecb5a852d21e82fa1c986c8d142303a3ebbf3de Mon Sep 17 00:00:00 2001 From: Marcin Gryszko Date: Wed, 18 Apr 2012 21:56:10 +0200 Subject: [PATCH] 1.2.4 completed --- ex1.16.scm | 1 + ex1.17.scm | 18 ++++++++++++++++++ ex1.18.scm | 0 ex1.19.scm | 14 ++++++++++++++ 4 files changed, 33 insertions(+) create mode 100644 ex1.16.scm create mode 100644 ex1.17.scm create mode 100644 ex1.18.scm create mode 100644 ex1.19.scm diff --git a/ex1.16.scm b/ex1.16.scm new file mode 100644 index 0000000..96026ee --- /dev/null +++ b/ex1.16.scm @@ -0,0 +1 @@ +`xzc`xc \ No newline at end of file diff --git a/ex1.17.scm b/ex1.17.scm new file mode 100644 index 0000000..e33483c --- /dev/null +++ b/ex1.17.scm @@ -0,0 +1,18 @@ +(define (even? n) + (= (remainder n 2) 0)) + +(define (halve n) + (/ n 2)) + +(define (double n) + (+ n n)) + +(define (* a b) + (cond ((= b 0) 0) + ((even? b) (* (double a) (halve b))) + (else (+ a (* a (- b 1)))))) + +(* 2 2) +(* 3 4) +(* 15 11) + diff --git a/ex1.18.scm b/ex1.18.scm new file mode 100644 index 0000000..e69de29 diff --git a/ex1.19.scm b/ex1.19.scm new file mode 100644 index 0000000..9886ee7 --- /dev/null +++ b/ex1.19.scm @@ -0,0 +1,14 @@ +(define (fib n) + (fib-iter 1 0 0 1 n)) + +(define (fib-iter a b p q count) + (cond ((= count 0) b) + ((even? count) (fib-iter a + b + ; compute p’ + ; compute q’ (/ count 2))) + (else (fib-iter (+ (* b q) (* a q) (* a p)) + (+ (* b p) (* a q)) + p + q + (- count 1))))) \ No newline at end of file