From 0faa62c745df99b35e94edfc8c672768e49ac661 Mon Sep 17 00:00:00 2001 From: NaiJi Date: Sat, 25 Jul 2020 02:36:24 +0300 Subject: [PATCH] Add 1.11 --- sicp-ex-1.11.rkt | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 sicp-ex-1.11.rkt diff --git a/sicp-ex-1.11.rkt b/sicp-ex-1.11.rkt new file mode 100644 index 0000000..2d858dd --- /dev/null +++ b/sicp-ex-1.11.rkt @@ -0,0 +1,27 @@ +; f(n) = n, when n < 3 +; f(n) = f(n - 1) + f(n - 2) + f(n - 3), when n >= 3 +(define fn 15) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; recursive +(define (f-rec n) + (if (< n 3) + n + (+ (+ (f-rec (- n 1)) + (f-rec (- n 2))) + (f-rec (- n 3))))) + +(f-rec fn) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; iterative +(define (f-iter n) + (f-iter-step 2 1 0 n)) + +(define (f-iter-step a b c count) + (if (< count 3) + a + (f-iter-step (+ a b c) a b (- count 1)))) + +(f-iter fn) +