Blame


1 665c255d 2023-08-04 jrmu (define (factorial n)
2 665c255d 2023-08-04 jrmu (if (= n 1)
3 665c255d 2023-08-04 jrmu 1
4 665c255d 2023-08-04 jrmu (* n (factorial (- n 1)))))
5 665c255d 2023-08-04 jrmu
6 665c255d 2023-08-04 jrmu (define (factorial n)
7 665c255d 2023-08-04 jrmu (fact-iter 1 1 n))
8 665c255d 2023-08-04 jrmu (define (fact-iter product counter max-count)
9 665c255d 2023-08-04 jrmu (if (> counter max-count)
10 665c255d 2023-08-04 jrmu product
11 665c255d 2023-08-04 jrmu (fact-iter (* product counter) (+ counter 1) max-count)))
12 665c255d 2023-08-04 jrmu
13 665c255d 2023-08-04 jrmu
14 665c255d 2023-08-04 jrmu (define (+ a b)
15 665c255d 2023-08-04 jrmu (if ( = a 0)
16 665c255d 2023-08-04 jrmu b
17 665c255d 2023-08-04 jrmu (inc (+ (dec a) b))))
18 665c255d 2023-08-04 jrmu
19 665c255d 2023-08-04 jrmu ;; This is a recursive process
20 665c255d 2023-08-04 jrmu (+ 4 5)
21 665c255d 2023-08-04 jrmu (inc (+ 3 5))
22 665c255d 2023-08-04 jrmu (inc (inc (+ 2 5)))
23 665c255d 2023-08-04 jrmu (inc (inc (inc (+ 1 5))))
24 665c255d 2023-08-04 jrmu (inc (inc (inc (inc (+ 0 5)))))
25 665c255d 2023-08-04 jrmu (inc (inc (inc (inc 5))))
26 665c255d 2023-08-04 jrmu ;; ...
27 665c255d 2023-08-04 jrmu
28 665c255d 2023-08-04 jrmu (define (+ a b)
29 665c255d 2023-08-04 jrmu (if (= a 0)
30 665c255d 2023-08-04 jrmu b
31 665c255d 2023-08-04 jrmu (+ (dec a) (inc b))))
32 665c255d 2023-08-04 jrmu
33 665c255d 2023-08-04 jrmu ;; This is an iterative process
34 665c255d 2023-08-04 jrmu (+ 4 5)
35 665c255d 2023-08-04 jrmu (+ 3 6)
36 665c255d 2023-08-04 jrmu (+ 2 7)
37 665c255d 2023-08-04 jrmu (+ 1 8)
38 665c255d 2023-08-04 jrmu (+ 0 9)