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