We trained hard, but it seemed that every time we were beginning to form up into teams, we would be reorganized. I was to learn later in life that we tend to meet any new situation by reorganizing; and a wonderful method it can be for creating the illusion of progress while producing confusion, inefficiency, and demoralization.- Petronius Arbiter, 210 BC
(define (fact n)
   (if (= n 0)
       1
       (* n (fact (- n 1)))))
Hint: use use a helper function of two arguments.  (6 points)
(define (fact n)
  (fact-aux n 1))
(define (fact-aux n a)
  (if (= n 0)
      a
      (fact-aux (- n 1) (* n a))))
Some of the rows have already been marked for you. (2 points/row = 14 points)
(aDEFINE (bFLATTEN X)
  (cFLATTEN-AUX X (dLIST)))
(DEFINE (FLATTEN-AUX X Y)
  (eCOND (f(gNULL? X) Y)
         (h(PAIR? X) (iFLATTEN-AUX (jCAR X)
                                   (kFLATTEN-AUX (CDR X) Y)))
         (ELSE (lCONS X Y))))
| paren | tail-recursive function call | non- tail-recursive function call | not a function call | 
|---|---|---|---|
| a | X | ||
| b | X | ||
| c | X | ||
| d | X | ||
| e | X | ||
| f | X | ||
| g | X | ||
| h | X | ||
| i | X | ||
| j | X | ||
| k | X | ||
| l | X |