Answer from cs61c-el (David Tung 16479725) for Question 2 The only thing that I could think of is the testing of base cases. Since that is the only way that a recursize procedure can terminate, it seems logical that if the program is no longer recursive, there is no longer a base case. Although there are still conditions that should cause a program to terminate early, it is not quite the same. With that, there is also another step that might be skipped in special cases: since the program is no longer calling itself, it may not have to save the variables within the function on the stack; however, it still doese if it calls another function, so this is not necessarily a difference. The error in Sheme that is prevented here is infinite recursion and using up all of the stack.