Before submitting this file, make sure that there are no more TODO
placeholders remaining in the file (and remove this comment too).

Warmup
------

Q1. Looking at a call stack listing in a debugger, what is the indication that the program being debugged uses recursion?
A1. TODO

Q2. What is the value of parameter `n` at the innermost level (Level 0 or Level 1, depending on your system)?  What is the highest numbered level shown in the call stack? (you may have to drag the column divider to enlarge the column width to fit all the digits) The range between the two gives an estimate of the capacity of the call stack on your system.
A2. TODO

Q3. Describe how the symptoms of infinite recursion differ from the symptoms of an infinite loop.
A3. TODO

Q4. What are the specific values of base/exp that result in a test failure?
A4. TODO

Q5. Of the four base cases, which do you think are redundant and can be removed from the function? Which do you think are absolutely necessary? Are there any base cases that you're unsure about?
A5. TODO

Q6. First explain why those cases were redundant/unnecessary and then explain why removing them fixed the test failure. (Hint: Consider the types of the values in play here and think about what happens when you do division with integers.)
A6. TODO

Q7. What is the result of attempting to compute 0 raised to a negative power without a special case for base == 0?
A7. TODO

Balanced
--------

Q8. Compare your recursive solution to the iterative approach used for the Check Balance problem in [Section 1][section1]. Which version do you find easier to read and understand? In which version did you find it easier to confirm the correct behavior?
A8. TODO

Merge
-----

Q9. Give a rough estimate of the maximum length sequence that could be successfully merged on your system assuming a recursive implementation of binary merge.
A9. TODO

Q10. What would be the observed behavior if attempting to recursively merge a sequence larger than that maximum?
A10. TODO

Q11. Include the data from your execution timing and explain how is supports your Big O prediction for binary `merge`.
A11. TODO

Q12. Include the data from your execution timing and explain how it supports your Big O prediction for `multiMerge`.
A12. TODO

Q13. Include the data from your execution timing and explain how it supports the `O(n log k)` runtime prediction for recMultiMerge.
A13. TODO

Q14. Earlier you worked out how a recursive implementation of `merge` would limit the allowable input sequence length. Are the limits on the call stack also an issue for the recursive implementation of `recMultiMerge`? Explain why or why not.
A14. TODO


Backtracking Warmup
-------------------
Q15: What is the value of the totalMoves variable in hanoiAnimationafter
stepping over the call to moveTower?
A15: TODO

Q16: What is the value of the totalMoves variable inside the first moveTower
call after stepping over its first recursive sub-call? (In other words, just
after stepping over the first recursive sub-call to moveTower inside the else
statement in the recursive function.)
A16: TODO

Q17: After breaking at the base case of moveTower and then choosing Step Out,
where do you end up? (What function are you in, and at what line number?) What
is the value of the totalMoves variable at this point?
A17: TODO

Q18: What is the smallest possible input that you used to trigger the bug in 
the program?
A18: TODO

Q19: Identify the one-character error in the code and explain why that one-character bug causes the function to return the output you see when running on the minimal input you listed above. You should be able to specifically account for how the error causes the result to change from “completely correct” to “terribly wrong.”
A19: TODO

Embedded Ethics in CS106B
-------------------------
Please refer to the assignment handout for these questions.

A20: TODO

A21: TODO

A22: TODO