CS 61A
Homework
Solutions
Week 3
1.
SICP exercises.
1.16:
The goal is to use the algorithm of fastexp on page 45, but avoid
using the recursive call as an argument to something else.
The hint tells us
to use an extra variable, a, which will contain part of the result.
(define (fastexp b n)
(define (iter a b n)
(cond ((= n 0) a)
((even? n) (iter a (square b) (/ n 2)))
(else (iter (* a b) b ( n 1)))))
(iter 1 b n))
We're supposed to keep the quantity a*b^n constant in all the invocations
of ITER for any specific problem.
If n is even, we square b and divide n
by 2, so we have
a * (b^2)^(n/2)
which is indeed equal to a*b^n.
If n is odd, we have
(a * b) * b^(n1)
which is also equal to a*b^n.
So each invocation does keep the overall value
constant.
When we get to n=0, therefore, the value of a must be the original
value of b^n.
It's important to pay attention to what the problem says about invariants;
that's what this problem is about!
1.35:
The definition of a fixed point is that it satisfies the equation
f(x)=x.
In this case, f(x)=1 + (1/x), so we are looking for a number that
satisfies
1 + (1/x) = x
Multiply both sides by x and you get
x + 1 = x^2
which is the definition of the golden ratio on page 38.
Therefore we can compute phi by calling
(fixedpoint (lambda (x) (+ 1 (/ 1 x))) 1)
1.37.
The simplest solution is probably the following, which uses a helper
function but generates a recursive process:
(define (contfrac n d k)
(define (helper i)
(if (> i k)
0
(/ (n i) (+ (d i)
(helper (+ i 1))))))
(helper 1))
This says that
helper(1) = N(1)/[D(1)+helper(2)]
helper(2) = N(2)/[D(2)+helper(3)]
and so on, until we reach the Kth term:
This preview has intentionally blurred sections. Sign up to view the full version.
View Full Document
helper(K) = N(K)/[D(K)+0]
In the iterative version, we first compute x = N(k)/D(k), then use that to
compute N(k1)/[D(k1)+x], and so on until we reach the outermost fraction.
This is the end of the preview.
Sign up
to
access the rest of the document.
 Fall '08
 Harvey
 Prime number, +X, Mersenne prime, perfect number, Andy McFadden

Click to edit the document details