Exercise 1-17 and Exercise 1-18 master
authorwatkinsr <ryanwatkins54@gmail.com>
Mon, 29 Jun 2020 00:53:00 +0000 (01:53 +0100)
committerwatkinsr <ryanwatkins54@gmail.com>
Mon, 29 Jun 2020 00:53:00 +0000 (01:53 +0100)
expt.scm

index 95f84a82396c1d1f84d484a7275aab25303f7fd9..ef424e84cd7faa7de848f20c2cc952a19bafaea0 100644 (file)
--- a/expt.scm
+++ b/expt.scm
 (newline)
 (write (fast-expt 2 6))
 (newline)
+
+;; Exercise 1.17
+
+(define (* a b)
+  (if (= b 0)
+    0
+    (+ a (* a (- b 1)))))
+
+(define (double x)
+  (+ x x))
+
+(define (halve x)
+  (/ x 2))
+
+(define (*-fast  a b)
+  (*-iter a b a))
+
+(define (*-iter a b c)
+  (cond ((= b 1) c)
+        ((even? b) (*-iter a (halve b) (double c)))
+        (else (*-iter a (- b 1) (+ c a))))) 
+
+(newline)
+(write (*-fast 3 4))
+(newline)
+(write (*-fast 4 4))
+(newline)
+(write (*-fast 5 6))
+(newline)
+(write (*-fast 12 30))