The code for factorial was given earlier:
   (define (fact n)
     (if (= n 0)
         1
         (* n (fact (- n 1))) ) )
This is fine provided that it is given a good argument  n.
But what happens if  n is negative:  (fact -3) ?
Rule: Test for a half-space rather than just for a point. It costs no more and can prevent errors.
Rule: Don't assume good input. Test it.
   (define (factorial n)
     (if (<= n 0)
         1
         (* n (factorial (- n 1))) ) )
Contents    Page-10    Prev    Next    Page+10    Index