diff options
| author | Mike Vink <mike1994vink@gmail.com> | 2023-01-10 15:37:16 +0100 |
|---|---|---|
| committer | Mike Vink <mike1994vink@gmail.com> | 2023-01-10 15:37:16 +0100 |
| commit | 6e7d017d5ee448b1037e4153fce7027826abd787 (patch) | |
| tree | ecbb02fb2e659835099711c64f6d63675d094ab9 | |
| parent | d062ec686a486822625e34cfa262e6d4e5b76a8d (diff) | |
116
| -rw-r--r-- | chapter115.rkt | 14 | ||||
| -rw-r--r-- | chapter116.rkt | 16 |
2 files changed, 30 insertions, 0 deletions
diff --git a/chapter115.rkt b/chapter115.rkt new file mode 100644 index 0000000..0a026c6 --- /dev/null +++ b/chapter115.rkt @@ -0,0 +1,14 @@ +#lang sicp +(define counter (box 0)) + +(define (cube x) (* x x x)) +(define (p x) + (set-box! counter (+ (unbox counter) 1)) + (- (* 3 x) (* 4 (cube x)))) +(define (sine angle) + (if (not (> (abs angle) 0.1)) + angle + (p (sine (/ angle 3))))) +(sine 1250.0) +(println "\n") +(println (unbox counter)) diff --git a/chapter116.rkt b/chapter116.rkt new file mode 100644 index 0000000..61b8e6f --- /dev/null +++ b/chapter116.rkt @@ -0,0 +1,16 @@ +(define (square x) (* x x)) + +(define (fast-expt b n) + (cond ((= n 0) 1) + ((even? n) (square (fast-expt b (/ n 2)))) + (else (* b (fast-expt b (- n 1)))))) + +(define (fie a b n) + (cond ((= n 0) a) + ((even? n) (fie a (square b) (/ n 2))) + (else (fie (* a b) b (- n 1))))) + +(define (fast-expt b n) + (fie 1 b n)) + +(fast-expt 3 4) |
