sicp exercise 1.4 and various recursive algorithms

This commit is contained in:
Marco 2024-08-20 16:45:14 +02:00
parent a92e918950
commit 1b3d763cc6
4 changed files with 69 additions and 0 deletions

5
exercise1-4.scm Normal file
View File

@ -0,0 +1,5 @@
(define (add-abs a b)
((if (> b 0) + -) a b )
)
(print (add-abs 3 -4))

5
factorial.scm Normal file
View File

@ -0,0 +1,5 @@
(define (factorial n)
(cond ((= n 2) 2)
(else (* (factorial (- n 1)) n))))
(print (factorial 10000))

22
newton.scm Normal file
View File

@ -0,0 +1,22 @@
(define (sqrt_iter new_guess last_guess x)
(if (good_enough? new_guess last_guess)
new_guess
(sqrt_iter (improve new_guess x) new_guess x)
)
)
(define (improve guess x)
(/ (+ guess (/ x guess)) 2))
(define (good_enough? guess last_guess)
(< (absolute (- guess last_guess)) 0.000000000000001))
(define (absolute x)
(if (< x 0)
(- 0 x)
x))
(define (sqrt x) (sqrt_iter (/ x 2.0) x x))
(print (sqrt 2))

View File

@ -0,0 +1,37 @@
(define (mainstage-with-if x y)
(print "this is mainstage-with-if")
(if (< x y) (stage11 x) (stage21 y)))
(define (mainstage-with-procedure-if x y)
(print "this is mainstage-with-if")
(procedure-if (< x y) (stage11 x) (stage21 y)))
(define (stage11 x)
(print "this is stage11")
(stage12 x))
(define (stage21 x)
(print "this is stage21")
(stage22 x))
(define (stage12 x)
(print "this is stage12")
(stage13 x))
(define (stage22 x)
(print "this is stage22")
(stage23 x))
(define (stage13 x)
(print "this is stage13")
x)
(define (stage23 x)
(print "this is stage23")
x)
(define (procedure-if predicate then-clause else-clause)
(cond (predicate then-clause) (else else-clause)))
(print (mainstage-with-if 1 2))
(print (mainstage-with-procedure-if 1 2))