diff options
| -rw-r--r-- | lecture1b.rkt | 32 | ||||
| -rw-r--r-- | tree-recursion.rkt | 19 |
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) |
