Exercise 1.12

Posted on Tuesday, September 11th, 2007

(define (p y x)
  (cond ((= y x) 1)
        ((= y 1) 1)
        ((= x 1) 1)
        (else
         (+ (p (- y 1) (- x 1))
            (p (- y 1) x)))))

(define (pascal y)
  (pic y 1))

(define (pic y count)
  (cond ((< y count) (newline))
        (else (print-row count 1)
              (pic y (+ 1 count)))))

(define (print-row y x)
  (cond ((> x y) (newline))              ; last number in row
        (else  (write (p y x))
               (print-row y (+ x 1)))))
 
Categorized as SICP Chapter 1, SICP Exercises