summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Vink <mike1994vink@gmail.com>2022-12-04 22:24:51 +0100
committerMike Vink <mike1994vink@gmail.com>2022-12-04 22:24:51 +0100
commitd062ec686a486822625e34cfa262e6d4e5b76a8d (patch)
tree0302d1775edb196bafcb126ccdfa2657a3e074c1
parente91745248ef79ce96d39771d5194784536fb581c (diff)
simultaneous operation and swap
-rw-r--r--lecture1b.rkt32
-rw-r--r--tree-recursion.rkt19
2 files changed, 49 insertions, 2 deletions
diff --git a/lecture1b.rkt b/lecture1b.rkt
index b03e64f..b6769b0 100644
--- a/lecture1b.rkt
+++ b/lecture1b.rkt
@@ -3,7 +3,35 @@
(p))
(define (test x y)
(if (= 0 x) 0 y))
-(test 0 (p))
-1
+;; (test 0 (p))
+(define (sqrt-iter guess prev x)
+ (if (good-enough? guess prev)
+ guess
+ (sqrt-iter (improve guess x) guess x)))
+(define (abs x)
+ (if (> x 0) x (- x)))
+
+(define (good-enough? guess prev)
+ (and
+ (> prev 0)
+ (< (abs (- 1 (/ guess prev))) 0.001)))
+
+(define (improve guess x)
+ (/ (+ (/ x guess) guess) 2))
+
+(sqrt-iter 1 0 9.0)
+
+(define (cube-improve guess x)
+ (/
+ (+ (/ x (* guess guess)) (* 2 guess))
+ 3))
+
+
+(define (cuberoot-iter guess prev x)
+ (if (good-enough? guess prev)
+ guess
+ (cuberoot-iter (cube-improve guess x) guess x)))
+
+(cuberoot-iter 1 0 8.0)
diff --git a/tree-recursion.rkt b/tree-recursion.rkt
new file mode 100644
index 0000000..031d40f
--- /dev/null
+++ b/tree-recursion.rkt
@@ -0,0 +1,19 @@
+#lang sicp
+(define (myfun n)
+ (cond ((< n 3) n)
+ (else (+ (myfun (- n 1))
+ (* 2 (myfun (- n 2)))
+ (* 3 (myfun (- n 3)))))))
+(myfun 11)
+
+(define (myfun2 n)
+ (define (mf i a b c)
+ (cond ((< n 3) n)
+ ((> i n) a)
+ (else (mf (+ i 1)
+ (+ a (* 2 b) (* 3 c))
+ a
+ b))))
+ (mf 3 2 1 0))
+
+(myfun 11)