{[ promptMessage ]}

Bookmark it

{[ promptMessage ]}

hw4 - CS 61A Week 4 solutions HOMEWORK 1 Start by tracing...

Info iconThis preview shows pages 1–3. Sign up to view the full content.

View Full Document Right Arrow Icon
Sheet1 Page 1 CS 61AWeek 4 solutions HOMEWORK: --------- 1. Start by tracing it out (mentally or online): (fact 5) (iter 1 1) (iter 1 2) (iter 2 3) (iter 6 4) (iter 24 5) (iter 120 6) What jumps out is that the first argument to ITER is always the factorial of something. Of what? One less than the second argument. So the invariant is product = (counter-1)! 2. Tracing again: (fact 5) (helper 1 5) (helper 5 4) (helper 20 3) (helper 60 2) (helper 120 1) (helper 120 0) This time, RESULT isn't the factorial of anything until the end. The invariant is a little harder to find, but at each step, the work still undone is the factorial of COUNTER, so the invariant turns out to be n! = result * counter! 3. Trace: (pigl 'scheme) (pighelp 'scheme) (pighelp 'chemes) (pighelp 'hemesc) (pighelp 'emesch) What's invariant is that all of these words have the same translation into Pig Latin: (pigl wd) = (pigl wrd) 4. In question 3, we had the name WD for our original argument, and the name WRD for the current argument to the helper. In the simpler procedure,
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Sheet1 Page 2
Background image of page 2
Image of page 3
This is the end of the preview. Sign up to access the rest of the document.

{[ snackBarMessage ]}